Skip to content

Instantly share code, notes, and snippets.

@xquery
Created September 10, 2011 12:49
Show Gist options
  • Select an option

  • Save xquery/1208273 to your computer and use it in GitHub Desktop.

Select an option

Save xquery/1208273 to your computer and use it in GitHub Desktop.
approach to persistent queue on MarkLogic (untested!)
xquery version "1.0-ml";
declare variable $flush := 1;
declare function local:queue($map){
if ($flush eq 1 or fn:empty(xdmp:get-server-field('queue'))) then
let $queue as map:map := map:map( if ($map) then $map else <map:map/>)
let $serverfield := xdmp:set-server-field('queue',$queue)
return
$queue
else
map:map(xdmp:get-server-field('queue'))
};
declare function local:queue-put($key,$val){
let $q as map:map := xdmp:get-server-field('queue')
let $p := map:put($q,$key,$val)
return
xdmp:set-server-field('queue',$q)
};
declare function local:queue-get($key){
let $q := map:map(xdmp:get-server-field('queue'))
return
map:get($q,$key)
};
local:queue(<map:map/>
(: run above first to init persistent queue, then the following
local:queue-put('1','test'),
local:queue-get('1')
:)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment