2016-05-13 8 views
3

なぜ産卵中にfn:last()関数が機能しないのですか?spawnされた関数のlast()

これは失敗しました:

xquery version "1.0-ml"; 
let $items := (1, 2, 3) 
return xdmp:spawn-function(function() { 
    $items[3 to fn:last()] 
}) 

を、私は仕事をキャンセルしばらくすると、それは何もしませんので。

出力:メッセージの表示機能で取り消しを手動で停止する必要があります。

これはうまく動作します:

xquery version "1.0-ml"; 
let $items := (1, 2, 3)[3 to fn:last()] 
return xdmp:spawn-function(function() { 
    $items 
}) 

出力:クエリは、この機能の非常によく似た使い方を示しているfn:last()のドキュメントのために成功し

+0

「失敗しました」というのは、実際には妥当な問題の説明ではありません。どのように失敗しましたか、エラーメッセージはありますか? –

+0

最初にXDMP-MEMORYが返されます。私はMarkLogicサポートでバグを報告する価値があると思います。それに助けが必要ですか? – grtjn

+0

その場合、私はそれを報告します。ありがとう。 – chriskelly

答えて

4

例完成しました。述語で関数を使用することの欠点は、シーケンスの各項目について評価されることです。 fn:subsequenceと、必要に応じてfn:countを使用すると、両方のより効率的に、そしてあなたの問題で、合格する必要があります

let $items := (1, 2, 3) 
return xdmp:spawn-function(function() { 
    xdmp:log(subsequence($items, 3, count($items))) (: you can omit 3rd param with same effect :) 
}) 

HTHを!

+0

これは私の問題を確実に解決します。私は予期せぬ動作なので、とにかくそれを報告します。ありがとう! – chriskelly

関連する問題