Signatures
|
jobs:schedule($query as xs:string) as xs:string
jobs:schedule($query as xs:string, $bindings as map(*)?) as xs:string
jobs:schedule($query as xs:string, $bindings as map(*)?, $options as map(xs:string, xs:string)) as xs:string
|
Summary
|
Schedules the execution of the supplied $query and returns a query id. The query will be queued, and the result will optionally be cached. Queries may be updating. Variables and context items can be declared via $bindings (see xquery:eval for more details). The $options parameter contains evaluation options:
cache : indicates if the query result will be cached or ignored (default: false ):
- The result will be cached in main-memory until it is fetched via jobs:result, or until
CACHETIMEOUT is exceeded.
- If the query raises an error, it will be cached instead.
- If the result will not be cached, the query id will immediately be discarded after query execution.
start : a dayTimeDuration, time or dateTime can be specified to delay the execution of the query:
- If a dayTimeDuration is specified, the query will be queued after the specified duration has passed. Examples for valid values are:
P1D (1 day), PT5M (5 minutes), PT0.1S (100 ms). An error will be raised if a negative value is specified.
- If a time is specified, the query will be queued at this time. Examples for valid times are:
02:00:00 (2am), 12:00:00 (noon). If the time lies in the past, the query will be executed next day.
- If a dateTime is specified, the query will be queued at this date. Examples for valid values are:
2018-12-31T23:59:59 (New Year's Eve 2018, close to midnight). An error will be raised if the specified time lies in the past.
interval : a dayTimeDuration string can be specified to execute the query periodically. An error is raised if the specified interval is less than one second (PT1S ).
base-uri : set base-uri property for the query. This URI will be used when resolving relative URIs by functions such as fn:doc (default: empty string).
|
Errors
|
overflow : Too many queries or query results are queued. CACHETIMEOUT can be decreased if the default setting is too restrictive.
range : A specified time or duration is out of range.
|
Examples
|
jobs:schedule("1+3", (), map{ 'cache': true() }) returns a query id, e.g. Job-123 . The result can be retrieved via a second query in the same BaseX context: jobs:result("Job-123")
- The following RESTXQ function will return the id of the query thread, which evaluates the query that has been specified in the body of a POST request:
declare %rest:POST("{$query}") %rest:path('/eval') function local:schedule($query) {
jobs:schedule($query)
};
|