Tuple-valued attribute


wrap(operand: Relation, attributes: AttrList, as: AttrName) -> Relation


wrap(suppliers, [:city, :status], :extra)
wrap(suppliers, [:city, :status], :extra, allbut: true)


Computes the relation obtained by removing attributes and replacing them by a single attribute (as). The latter is a tuple-valued attribute obtained by projecting the input tuple on attributes.

This operators supports an ALL BUT variant, through the allbut option. When set to true, the operator keeps specified attributes and wraps all the remaining ones as a tuple-valued attribute.

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)