Sorry Christian, do you mean *not* synchronized?
M.
On 28/01/25 12:55, Christian Grün wrote:
Ahh, I see. I can reproduce your result by omitting the %updating.
I guess the store functions, like the file functions, are updating
(but they just don't like to admit it 😀.)
;·) All side-effecting BaseX functions are internally tagged as
»nondeterministic«. This way, various optimizations are suppressed
that may change the behavior of the code. For example, in code like…
let $bye := file:delete('bye.bye')
return 123
…it is ensured that the expression bound to $bye is executed, even if
the variable is not referenced later on. In contrast, code like…
let $bye := <a/>
return 123
…is simplified to '123' before it will be executed.
It is important to know that side-effecting code that is executed in
parallel may lead to conflicts, even if it is performed in the same
JVM. For example, we removed several synchronicity checks for file
functions a while ago to speed up their evaluation. *The store
functions will remain synchronized*.
Best,
Christian