Yeah - I guess I read that line and didn't think much about it until now. So, when other parameters in the same call aren't the empty sequence, could it be considered a bug that the entire function isn't called?
Steve On Fri, Apr 2, 2010 at 3:25 PM, Danny Sokolsky <danny.sokol...@marklogic.com > wrote: > What is happening is that, as a result of function mapping, when you pass > in the empty sequence the function is being called 0 times. > > Here is what the documentation says to try and explain this (from the > "MarkLogic Server Enhanced XQuery Language" chapter of the XQuery Reference > Guide): > > One consequence of function mapping, which can be surprising the first time > you see it, is that if the value passed for a parameter is the empty > sequence, it could result in the function being called 0 times (that is, in > the function never runs and results in the empty sequence. For example, if > you entered the empty sequence as the parameter to the above function call, > it returns empty, as follows: > > xquery version "1.0-ml"; > > declare function local:print-word ($word as xs:string) { $word }; > > local:print-word( () ) > (: > evaluates the print-word function zero times, resulting > in the empty sequence > :) > > The local:print-word function is never called in this case, because it is > iterating over the empty sequence, which causes zero invocations of the > function. If your function calls are fed by code that can return the empty > sequence (an XPath expression, for example), then you might see this > behavior. > > -Danny > > From: general-boun...@developer.marklogic.com [mailto: > general-boun...@developer.marklogic.com] On Behalf Of spig > Sent: Friday, April 02, 2010 2:19 PM > To: General Mark Logic Developer Discussion > Subject: Re: [MarkLogic Dev General] Unexpected behavior > > Yes, with xdmp:mapping set to "false" it does throw an expected coercion > error. > > So, how come? > > I was under the impression that xdmp:mapping applies the function's logic > to each parameter. Does xdmp:mapping also not call functions under certain > circumstances? Is there someone who can help explain this functionality or a > document I can read? > > Steve > > So, can someone explain, or point me to a document where xdmp:mapping is > explained? I've read the xdmp:mapping section in the MarkLogic > On Fri, Apr 2, 2010 at 3:05 PM, Micah Dubinko <micah.dubi...@marklogic.com> > wrote: > Try turning off function mapping with this declration at the top (after any > module imports) > > declare option xdmp:mapping "false"; > > Does that at least allow the function to get called (or cause a coercion > error involving ())? > > -m > > On Apr 2, 2010, at 2:01 PM, spig wrote: > > > The point is that the function is never called (it is throwing fn:error > just to prove that it's not called, errors or not). Also, there is no > warning that the function is not being called, or that there is an error in > the parameter. Anyone know why this is? Try running the code and you'll see > what I mean. It's almost like there is a hidden try/catch around my code - > no errors raised and doesn't show that nothing was called. > > > > Steve > > > > On Fri, Apr 2, 2010 at 2:55 PM, Ruth Stryker <ruth.stry...@marklogic.com> > wrote: > > Hi spig, > > > > > > Not sure about fn:error(). Maybe approach with try get instead.? > > > > > > try { > > 1 div 0 > > } > > catch ($e) { > > $e > > } > > > > Or just use an if then else for checking if your field exists.? > > > > > > if(xdmp:get-request-field("q")) > > > > then local:search-results() > > > > else . > > > > > > > > > > From: general-boun...@developer.marklogic.com [mailto: > general-boun...@developer.marklogic.com] On Behalf Of spig > > Sent: Friday, April 02, 2010 1:43 PM > > To: general@developer.marklogic.com > > Subject: [MarkLogic Dev General] Unexpected behavior > > > > > > If I run the following code, my function is never called and no errors > are raised. Any ideas? > > > > > > xquery version "1.0-ml"; > > > > declare function local:test($param1 as xs:string, $param2 as xs:string, > $param3 as xs:string) { > > fn:error() > > }; > > > > let $var := xdmp:get-request-field("non-existent-param") > > > > let $blah := local:test("", "", $var) > > > > return "Function Call Successful" > > > > > > > > Thanks, > > Steve Spigarelli > > > > > > _______________________________________________ > > General mailing list > > General@developer.marklogic.com > > http://xqzone.com/mailman/listinfo/general > > > > > > _______________________________________________ > > General mailing list > > General@developer.marklogic.com > > http://xqzone.com/mailman/listinfo/general > > _______________________________________________ > General mailing list > General@developer.marklogic.com > http://xqzone.com/mailman/listinfo/general > > _______________________________________________ > General mailing list > General@developer.marklogic.com > http://xqzone.com/mailman/listinfo/general >
_______________________________________________ General mailing list General@developer.marklogic.com http://xqzone.com/mailman/listinfo/general