[ 
https://issues.apache.org/jira/browse/TINKERPOP-3275?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18098535#comment-18098535
 ] 

ASF GitHub Bot commented on TINKERPOP-3275:
-------------------------------------------

Cole-Greer commented on PR #3539:
URL: https://github.com/apache/tinkerpop/pull/3539#issuecomment-5061051693

   VOTE +1
   
   Note to whoever ends up merging this, to re-evaluate the impact on 
GraphBinary 4 when merging into master. The GB4 write path in python is 
borderline dead code at the moment so perhaps we're safe to just keep the new 
feature tests and drop the code change, otherwise, this fix should be adapted 
into GB4 upon merging.




> gremlin-python graphbinary BigInt serializer incorrect for negative boundary 
> values
> -----------------------------------------------------------------------------------
>
>                 Key: TINKERPOP-3275
>                 URL: https://issues.apache.org/jira/browse/TINKERPOP-3275
>             Project: TinkerPop
>          Issue Type: Bug
>          Components: python
>    Affects Versions: 3.7.6, 3.8.1
>            Reporter: Ken Hu
>            Priority: Major
>
> Caveat: I haven't fully verified this, just something AI told me when I was 
> updating the "model" tests for gremlin-python. Just putting here so it can be 
> checked later.
> gremlin-python can't serialize BigInt signed boundary values like -129.
> {code:java}
>  The failure path is:
>   GraphBinaryWriter.write_object()
>   BigIntIO.dictify()
>   BigIntIO.write_bigint()
>   obj.to_bytes(length, byteorder='big', signed=True)
> {code}
> For -129, Python reports:
> (-129).bit_length() == 8
> The current writer computes:
>   length = (obj.bit_length() + 7) // 8  # 1
> But one signed byte only represents -128 through 127, so -129 needs two bytes 
> in two’s complement form. The serializer is using magnitude bit length as if 
> it were signed encoded length.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to