# 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)