>
> 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

Reply via email to