jena-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Andy Seaborne (Commented) (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (JENA-153) xsd:integers larger than java.long.MAX_VALUE silently overflow in ARQ
Date Wed, 02 Nov 2011 18:13:33 GMT

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

Andy Seaborne commented on JENA-153:
------------------------------------

Internally, ARQ uses BigInteger - the quoted /typedLiterals.html/ refers to jena core and
ARQ has it's own, extended value processing as it adds a lot of machinery.

Knowing it's not one single operation or one query is very helpful in narrrowing the places
to look - thanks.

Found: NodeValue._setByValue squeezes value into a long for no good reason.

ARQ has a command line tool "arq.qexpr" that evaluates SPARQL expressions.

                
> xsd:integers larger than java.long.MAX_VALUE silently overflow in ARQ
> ---------------------------------------------------------------------
>
>                 Key: JENA-153
>                 URL: https://issues.apache.org/jira/browse/JENA-153
>             Project: Jena
>          Issue Type: Bug
>          Components: ARQ, Jena
>            Reporter: Richard Cyganiak
>            Priority: Minor
>
> ARQ handles small xsd:integers fine, and it handles large xsd:integers fine, but there
seems to be some weirdness going on with integers of ~20 digits:
> ASK {FILTER (200000/2=100000)} => true
> ASK {FILTER (20000000/2=10000000)} => true
> ASK {FILTER (2000000000/2=1000000000)} => true
> ASK {FILTER (200000000000/2=100000000000)} => true
> ASK {FILTER (20000000000000/2=10000000000000)} => true
> ASK {FILTER (2000000000000000/2=1000000000000000)} => true
> ASK {FILTER (200000000000000000/2=100000000000000000)} => true
> ASK {FILTER (20000000000000000000/2=10000000000000000000)} => ***false***
> ASK {FILTER (2000000000000000000000/2=1000000000000000000000)} => true
> ASK {FILTER (200000000000000000000000/2=100000000000000000000000)} => true
> ASK {FILTER (20000000000000000000000000/2=10000000000000000000000000)} => true
> These were all tested in http://sparql.org/sparql.html with an arbitrary target graph
URI.
> It works fine again if dividend and quotient are changed to xsd:decimal:
> ASK {FILTER (20000000000000000000.0/2=10000000000000000000.0)} => true
> I guess this may have something to do with Java's native long being used for xsd:integers
of some size, and BigInteger for others?

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message