Manipulating Distinct Types
When you compare or manipulate data of a distinct type and its
source type, you must explicitly cast one type to the other in the
following situations:
- To insert or update a column of one type with values of the other type
- To use a relational operator to add, subtract, multiply, divide, compare, or otherwise manipulate two values, one of the source type and one of the distinct type
For example, suppose you create a distinct type, dist_type,
that is based on the NUMERIC data type. You then create a table with
two columns, one of type dist_type and one of type NUMERIC.
CREATE DISTINCT TYPE dist_type AS NUMERIC;
CREATE TABLE t(col1 dist_type, col2 NUMERIC);
To directly compare the distinct type and its source type or assign
a value of the source type to a column of the distinct type, you must
cast one type to the other, as the following examples show:
INSERT INTO tab (col1) VALUES (3.5::dist_type);
SELECT col1, col2
FROM t WHERE (col1::NUMERIC) > col2;
SELECT col1, col2, (col1 + col2::dist_type) sum_col
FROM tab;
For information about queries and other distributed DML operations that access DISTINCT data types in tables outside the local database, see the topic DISTINCT Types in Distributed Operations.