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
<cel...@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: cel...@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 <m...@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 
> <cel...@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
>
>
>

Reply via email to