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]

Reply via email to