Please visit the XQuery 3.0 specification if you want to get more insight into
[http://www.w3.org/TR/xpath-functions-30/#properties-of-functions function properties].
=Locking=
{{Mark|Introduced with Version 7.8:}}
By default, Java functions will be called in parallel with the execution of other transactions. If a Java function performs sensitive write operations, it is advisable to explicitly lock the code. This can be realized via Lock annotations:
<pre class="brush:java">
@Lock(write = { "HEAVYIO" })
public void write() {
// ...
}
@Lock(read = { "HEAVYIO" })
public void read() {
// ...
}
</pre>
If an XQuery expression is run which calls the Java {{Code|write()}} function, every other query that calls {{Code|write()}} or {{Code|read()}} needs to wait for the query to be finished. More details on parallel query execution can be found in the aerticle on [[Transaction Management]].
=Changelog=