You need to make the updates happen in a separate transaction and then make the 
get-collections happen in a separate transaction that has a timestamp later 
than the update.  One way to do that is by making them each do evals.  
SOmething like:

xquery version "1.0-ml";
declare function local:mytest()
{
(
xdmp:eval('xdmp:document-insert("/aa.xml", <foo/>)'),
xdmp:eval('xdmp:document-set-collections( "/aa.xml", ("http://py";))
,
xdmp:document-get-collections("/aa.xml")
,
xdmp:document-add-collections( "/aa.xml", ("http://mytest";))')
,
xdmp:eval('xdmp:document-get-collections("/aa.xml")')
)
};

local:mytest()

-Danny

From: [email protected] 
[mailto:[email protected]] On Behalf Of helen chen
Sent: Tuesday, July 06, 2010 2:03 PM
To: General Mark Logic Developer Discussion
Subject: [MarkLogic Dev General] how to do multi-transaction in a function

I want to do an update to a document and then see the update immediately. I did 
a test like the following:
I add a collection to a document, then try to get it, within the same 
transaction I cannot see the new collection. That means I have to be in the 
seperate transaction.

declare function local:mytest()
{
(
xdmp:document-set-collections( "/aa.xml", ("http://py";))
,
xdmp:document-get-collections("/aa.xml")
,
xdmp:document-add-collections( "/aa.xml", ("http://mytest";))
,
xdmp:document-get-collections("/aa.xml")
)
};

local:mytest()


How can I make the last line xdmp:document-get-collections("/aa.xml") as 
seperate transaction so I can see the change?

Thanks, Helen
_______________________________________________
General mailing list
[email protected]
http://developer.marklogic.com/mailman/listinfo/general

Reply via email to