record type
A record
is a tuple that can contain an arbitrary number of elements of any
type.
Detail | Info |
---|---|
Quick Syntax | ROW($expr, ...) |
Size | Variable |
Catalog name | Unnameable |
Syntax
Details
Record types can be used to represent nested data.
The fields of a record are named f1
, f2
, and so on. To access a
field of a record, use the .
operator. Note that you need to parenthesize the
record expression to ensure that the .
is interpreted as the field selection
operator, rather than part of a database- or schema-qualified table name.
Catalog name
record
is a named type in PostgreSQL (pg_catalog.record
), but is
currently an unnameable type in Materialize.
Valid casts
You can cast record
to text
by assignment.
You cannot cast from any other types to record
.
Examples
SELECT ROW(1, 2) AS record;
record
--------
(1,2)
SELECT record, (record).f2 FROM (SELECT ROW(1, 2) AS record);
record | f2
--------+----
(1,2) | 2
Forgetting to parenthesize the record expression in a field selection operation will result in errors like the following
SELECT record.f2 FROM (SELECT ROW(1, 2) AS record);
ERROR: column "record.f2" does not exist
as the expression record.f2
specifies a column named f2
from a table named
record
, rather than the field f2
from the record-typed column named
record
.