WARNING: a problem with non-deterministic (random()) filters



We’ve recently found an intermittent issue that affects non-deterministic expressions, when used in filter() and build_sparse().
This is a typical, most likely example:

create array foo <val:double> [x=1:10000,1000,0, y=1:10000,1000,0]
store(build(foo, random()), foo) --OK

filter(foo, random()%2) -- DO NOT USE; intederminate
build_sparse(foo, x+y, random() % 2) --DO NOT USE as well

Please refrain from using such queries at the moment.
Instead, as a workaround, you can use operator bernoulli:

bernoulli(foo, 0.5) --OK

If you cannot do without a non-deterministic expression, you can also store the result and then use it to filter:

store(project(apply(foo, expr, random()%2 ), expr), foo_expr)
filter(join(foo, foo_expr), expr) --also OK

We are working on the fix.