Could you attach one of the queries that you mentioned in your first question (i.e., that didn’t work for you)? We might then be able to resolve why $o2 seems to take longer than you would expect it to take.
In general, it’s recommendable not to bind code to variables if the expression does not yield any results. I would probably rewrite your code as follows:
let $dir := "/Users/mycomputer/prova/" return ( file:create-dir($dir), file:write($dir || "file1.xml", "ciao"), file:write($dir || "file2.xml", file:read-text($dir || "file1.xml")) )
As XQuery is a function language, it would be allowed for a processor to run the second write call before the first. However, we enforce the evaluation of the original expression if expressions are non-deterministic or side-effecting (which is the case for all of your function calls).
On Tue, Mar 12, 2019 at 11:44 AM Giuseppe G. A. Celano celano@informatik.uni-leipzig.de wrote:
let $o := file:create-dir("/Users/mycomputer/prova") let $o2 := file:write("/Users/mycomputer/prova/file1.xml", "ciao") let $o3 := file:write("/Users/mycomputer/prova/file2.xml", file:read-text("/Users/mycomputer/prova/file1.xml")) return ($o, $o2, $o3)
This actually works. In my real example the writing of $o2 requires e few seconds. It might be that $o3 is evaluated while $o2 is still running?
Dr. Giuseppe G. A. Celano DFG-project leader Universität Leipzig Institute of Computer Science, NLP Augustusplatz 10 Tel: +4934132223 04109 Leipzig Deutschland
E-mail: celano@informatik.uni-leipzig.de Web site 1: http://asv.informatik.uni-leipzig.de/en/staff/Giuseppe_Celano Web site 2: https://sites.google.com/site/giuseppegacelano/
On Mar 12, 2019, at 11:27 AM, Michael Seiferle ms@basex.org wrote:
Hi Guiseppe,
The following pattern is supposed to / does work:
file:write("1.txt", "Written to 1.txt"), file:write("2.txt", file:read-text("1.txt")), "Read from 2.txt: " || file:read-text('2.txt')
Could you maybe elaborate a bit more on your code?
Best from Konstanz
Michael
Am 12.03.2019 um 11:19 schrieb Giuseppe G. A. Celano celano@informatik.uni-leipzig.de:
Hi
I wrote a single script which should do: write a file -> open this file -> write another different file. I put the write expressions in the right sequence, but it seems that the second one cannot happen because the file created by the first write function has not yet been created at the time the second function is invoked. Does anyone have a suggestion about this? Thanks.
Best, Giuseppe