XQuery: Bug on arithemetic operations with last() and position()
Twilight-Shuxin opened this issue · comments
Shuxin_Li commented
Description of the Problem
Given this XML document:
<S/>
and XPath Query
//S[last() * 150000 >= position()]
BaseX returns empty result set.
Expected Behavior
Should return node S as predicate evaluates to true.
Steps to Reproduce the Behavior
- Create database
create database test <S/>
- Execute XPath query
xquery //S[last() * 150000 >= position()]
Do you have an idea how to solve the issue?
It seems strange and might be related to overflow for changing the multiplication operand constant to smaller numbers BaseX functions as expected. However it seems like a bug for all integers involved including intermediate results are within integer range.
What is your configuration?
BaseX version: BaseX 10.7 beta latest commit 43fb2d5 on Windows
Christian Grün commented
Thanks again. Your assumption about overflows was correct.
We made the mistake of computing a long value instead of a double value.