Sha256: 11f68d00a58bcb04528a1e14a5b85ce1de235b975c25bda3c1db6a73da8bf518
Contents?: true
Size: 1.32 KB
Versions: 3
Compression:
Stored size: 1.32 KB
Contents
.TH Intersect .PP Logical AND .SH Signature .PP .RS .nf intersect(left: Relation, right: Relation) -> Relation .fi .RE .SH Examples .PP .RS .nf intersect( restrict(suppliers, eq(:city, 'Paris')), restrict(suppliers, gt(:status, 10))) .fi .RE .SH Description .PP Computes the relation as the set intersection of \fB\fCleft\fR and \fB\fCright\fR\&. .PP The \fB\fCleft\fR and \fB\fCright\fR relations must be intersect\-compatible, meaning that they must have same heading (type inheritance is partly supported through ruby's own type system, so that the actual behavior is slighlty more permissive). .SH Implementation notes .PP Unlike SQL, this operator ALWAYS remove duplicates. There is no way, in Alf, to compute \fIbags\fP of tuples and therefore no way to express something such as SQL's INTERSECT ALL. .PP It is sometimes idiomatic in Alf to use \fB\fCintersect\fR as a logical AND, as illustrated below. So far, the optimizer/compiler is not smart enough to translate the former into the latter (which is likely to have a better query when using faithful SQL compilation and available SQL DBMSs). Any patch is welcome here too! .PP .RS .nf intersect( restrict(suppliers, eq(:city, 'Paris')), restrict(suppliers, gt(:status, 10))) .fi .RE .PP is equivalent to .PP .RS .nf restrict(suppliers, eq(:city, 'Paris') & gt(:status, 10)) .fi .RE
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
alf-shell-0.16.4 | doc/man/intersect.man |
alf-shell-0.16.0 | doc/man/intersect.man |
alf-shell-0.15.0 | doc/man/intersect.man |