1fanwang opened a new pull request, #970: URL: https://github.com/apache/incubator-graphar/pull/970
### Reason for this PR Writing vertices with a builder that starts after vertex `0` currently corrupts their IDs and serialized rows. The first auto-assigned vertex gets ID `0` instead of the requested starting ID, while an explicit global ID can create empty rows and move the payload to another ID. Fixes https://github.com/apache/incubator-graphar/issues/954. ### What changes are included in this PR? Convert explicit global IDs to local vector offsets before storing vertices, then restore the global ID on the vertex. The builder now enforces the nonnegative, chunk-aligned start and lower-bound index invariants under every validation level. ### Are these changes tested? The existing `Test_vertices_builder` now covers auto-assigned and explicit IDs with a nonzero start, verifies the persisted `_graphArVertexIndex` values, and checks invalid starts and below-start IDs under the default validation level. <details> <summary>Regression evidence</summary> The regression test from this PR was first compiled against current `main` at `0e2bb53a7d273f70dfbac7e4a915911ceb27748d`: ```text $ cd graphar $ export GAR_TEST_DATA="$PWD/testing" $ cpp/build_debug/test/test_builder "Test_vertices_builder" FAILED: REQUIRE( auto_indexed_vertex.GetId() == nonzero_start_index ) with expansion: 0 == 100 test cases: 1 | 0 passed | 1 failed ``` The same command at PR head `6113123c4d9423ca75773d36e7bbcbceded6b5ac` passes: ```text $ cpp/build_debug/test/test_builder "Test_vertices_builder" All tests passed (1158 assertions in 1 test case) ``` </details> ### Are there any user-facing changes? Yes. Vertices written by a builder with a nonzero start now retain their requested global IDs without emitting phantom rows. Invalid start and vertex indices return an index error instead of producing corrupt output. ## Checklist - [x] I performed a self-review of the code. - [x] I ran GraphAr's C++ formatting and cpplint checks. - [x] I ran pre-commit on the changed files. - [x] I added tests that fail before the fix and pass after it. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
