Dear Andy,

sorry for the frightening delay! We haven't been inactive, however:
you have warmed up a frequently discussed limitation of XQuery Update,
and after a longer discussion, we found a solution that complies to
the semantics of the XQuery Update spec., but still gives you a
solution to return results from an updating query.

The solution is a new function db:output() [1], which caches its
argument at runtime and returns the result after all update operations
have been processed. If a node is passed on as argument, it is copied
in main memory to avoid that it will be modified or deleted in a
pending update operation. The db:output() function itself is marked
"updating", which means that it can only be used in combination with
other updating operations.

Beside that, we have now defined all functions that return no value as
"vacuous", which means they can now be used along with other updating
operations. This way, you can e.g. perform update operations and call
file:append(...) to write information to a log file in a single query.

I have just updated our snapshots; feedback is welcome.
Christian

[1] http://docs.basex.org/wiki/Database_Module#db:output
[2] http://docs.basex.org/wiki/Releases#Stable_Snapshots
___________________________

On Fri, Apr 13, 2012 at 2:54 PM, Andy Bunce <bunce.a...@gmail.com> wrote:
> Musing on the the usefulness of actions that update the database and return
> something, specifically in a web server with Xforms context, and the absence
> of XQuery scripting. I have been playing around with things like the
> following:
>
> let $s:=util:eval('
> let $x:=copy $c:=db:open("listman","1.xml")
> modify (replace value of node $c/updated with current-dateTime())
> return $c
> return db:replace("listman","1.xml",$x)
> ')
> return db:open("listman","1.xml")
>
> This works, but is it likely to stop working in the future? Is there a
> better way?
>
> /Andy
>
> _______________________________________________
> BaseX-Talk mailing list
> BaseX-Talk@mailman.uni-konstanz.de
> https://mailman.uni-konstanz.de/mailman/listinfo/basex-talk
>
_______________________________________________
BaseX-Talk mailing list
BaseX-Talk@mailman.uni-konstanz.de
https://mailman.uni-konstanz.de/mailman/listinfo/basex-talk

Reply via email to