If you're trying to figure out how long things take to run, you could use xdmp:elapsed-time().

   http://docs.marklogic.com/xdmp:elapsed-time

Be aware that lazy/delayed evaluation can result in confusing results. You can avoid that with xdmp:eager().

   http://docs.marklogic.com/xdmp:eager



On 01/05/2017 09:44 AM, David Lee wrote:

This is correct functionality.

Within a single XQuery statement fn:current-dateTime will return the same value. This is defined in the W3C XQuery specifications. The specifications do not cover the concept of multiple 'statements' or 'transactions' or spawn/eval/invoke etc -- those are higher level vendor specific concepts. The behavior you are seeing is exactly what should be expected.

Within any 'statement' fn:current-dateTime() is guaranteed to be the same; In different statements it may be different (depending on the precision of the time format and how fast the statements are executed.)

A minimal case to try is this:

----- Single Xquery Statement.

fn:current-dateTime(),

xdmp:sleep(1000),

fn:current-dateTime()

----------------->>> This will produce the same results for both

vs

-------- Multiple XQuery Statements (note ";" vs "," )

fn:current-dateTime();

xdmp:sleep(1000);

fn:current-dateTime();

-----> The second time will be approx. 1 second greater than the first.

*From:*[email protected] [mailto:[email protected]] *On Behalf Of *sweet frd
*Sent:* Thursday, January 05, 2017 2:00 AM
*To:* MarkLogic Developer Discussion <[email protected]>
*Subject:* Re: [MarkLogic Dev General] fn:current-dateTime()

Hi All,

Please find the below code snippet in which i have created an invoke and module xquery with same fn:current-dateTime() logging and returning result.

As a result I can able to see the timestamp is different :

       1. when an other xquery is called using invoke

       2. when an other xquery is called using spawn

3. when using spawn function for both local and other module xquery function

*Sample :*

import module namespace check = "http://marklogic.com/check"; at "/a/common/check_now.xqy";

declare function local:dateTime(){

(

fn:current-dateTime(),

xdmp:log(("local fun",fn:current-dateTime()))

)

};

*let $check := fn:current-dateTime()*

let $time := cts:uri-match("*")

let $time := cts:search(doc(),())

let $check1 := xdmp:invoke("/a/common/now.xqy")

let $check11 := xdmp:spawn("/a/common/now.xqy")

*let $check2 := fn:current-dateTime()*

let $check3 := local:dateTime()

let $check4 := check:dateTime()

let $check5 := xdmp:spawn-function(function(){local:dateTime()})

let $check6 := xdmp:spawn-function(function(){check:dateTime()})

return ("Result",$check,"aaa",$check1,"aaa11",$check11,"bbb",$check2,"ccc",$check3,"ddd",$check4,"spawn eee",$check5, "fff",$check6)

Verify the result and marklogic logs..

Regards,

N. Sumathi.

On Thu, Nov 17, 2016 at 6:53 AM, Florent Georges <[email protected] <mailto:[email protected]>> wrote:

    Hi,

    The current date and time is the same through the evaluation of the
    entire query.  So if "submodule.xay" is a library module, imported in
    the main module, that will give you the exact same value.

    If it is not a library module, and you invoke, spawn, schedule a task,
    eval or anything else, it depends on that "anything else"...

    Regards,

    --
    Florent Georges
    http://fgeorges.org/
    http://h2o.consulting/ - New website!



    On 17 November 2016 at 12:46, sweet frd wrote:
    > Hi All,
    >
    > I have a module somemodule.xqy which has the following line for
    logic
    >
    > fn:current-dateTime()
    >
    >
    > Will there be a difference in output for the below scenarios
    >
    > (a) Invoke the above xquery (somemodule.xqy) in main module
    >
    > (b) Directly invoke the function fn:current-dateTime() in the
    main module
    >
    >
    > Regards,
    > N. Sumathi.
    >

    > _______________________________________________
    > General mailing list
    > [email protected]
    <mailto:[email protected]>
    > Manage your subscription at:
    > http://developer.marklogic.com/mailman/listinfo/general
    >
    _______________________________________________
    General mailing list
    [email protected]
    <mailto:[email protected]>
    Manage your subscription at:
    http://developer.marklogic.com/mailman/listinfo/general



_______________________________________________
General mailing list
[email protected]
Manage your subscription at:
http://developer.marklogic.com/mailman/listinfo/general

_______________________________________________
General mailing list
[email protected]
Manage your subscription at: 
http://developer.marklogic.com/mailman/listinfo/general

Reply via email to