cachedTable

Syntax

cachedTable(updateFunc, retentionSeconds)

Arguments

updateFunc is a function without parameters. It must return a table.

retentionSeconds is a positive integer indicating the frequency (in seconds) to update the cached table.

Details

Create a special type of in-memory table: cached table. When querying the cached table, if the time elapsed since the last update exceeds a specified value, updateFunc is executed automatically to update the cached table.

To access a cached table with multiple threads, the table must be shared.

Examples

This example defines a unary function, f1, and fixes its argument to produce a partial application with no arguments, f1{t}. f1{t} is passed as the updateFunc to cachedTable.

def f1(mutable t){
    update t set id=id+1
    return t
}
t=table(1..5 as id, 15 25 35 45 55 as val)
ct=cachedTable(f1{t}, 2);

select * from ct;
id val
2 15
3 25
4 35
5 45
6 55
sleep(2100)
select * from ct
id val
3 15
4 25
5 35
6 45
7 55
ct=NULL;