Unwrap
Inverse of wrap
Signature
unwrap(operand: Relation, tva: AttrName) -> Relation
Examples
unwrap(wrap(suppliers, [:city, :status], :extra), :extra)
Description
Computes the relation obtained by unwrapping a tuple-valued attribute tva
.
Unwrapping of tva
on an input tuple t
consists in removing tva
from
t
and extending the result with tva
's own attributes:
Tuple(x: 1, tva: Tuple(y: 2, z: 3)) -> Tuple(x: 1, y: 2, z: 3)
tva
must be a tuple-valued attribute. It should not itself contain any
attribute whose name clashes with an attribute of operand
. In the examples
above, tva
may not contain an attribute called x
.
Implementation notes
This operator does not compile to SQL so far. Contributions are welcome to provide it with a SQL compilation for SQL DBMSs that support this kind of feature (e.g. PostgreSQL with JSON data type)