Restrict
Predicate-based filtering
Signature
restrict(operand: Relation, predicate: Predicate) -> Relation
Examples
restrict(suppliers, city: 'Paris', status: 20)
restrict(suppliers, eq(city: 'Paris') & gt(:status, 20))
restrict(suppliers, ->(t){ t.city == 'Paris' and t.status > 20 })
Description
Computes a relation as a subset of operand
tuples for which a tuple
predicate evaluates to TRUE.
Implementation notes
As of current Alf version, native predicates (through ruby Proc
objects)
cannot be optimized nor compiled to SQL. The use of predicate factories
(eq
, gt
, etc.) is strongly recommended.