Casts
CAST declarations with function, implicit, assignment, and explicit cast contexts.
Implicit cast
SCHEMA public {
CAST (mytype AS TEXT)
WITH FUNCTION mytype_to_text(mytype)
AS IMPLICIT;
}
-- emits
CREATE CAST (mytype AS text)
WITH FUNCTION mytype_to_text(mytype)
AS IMPLICIT;
Assignment cast
SCHEMA public {
CAST (TEXT AS mytype)
WITH FUNCTION text_to_mytype(TEXT)
AS ASSIGNMENT;
}
-- emits
CREATE CAST (text AS mytype)
WITH FUNCTION text_to_mytype(text)
AS ASSIGNMENT;
Explicit cast (default)
SCHEMA public {
CAST (mytype AS INTEGER)
WITH FUNCTION mytype_to_int(mytype);
}
-- emits
CREATE CAST (mytype AS integer)
WITH FUNCTION mytype_to_int(mytype);
INOUT cast
SCHEMA public {
CAST (mytype AS TEXT) WITH INOUT;
}
-- emits
CREATE CAST (mytype AS text) WITH INOUT;
Diffing behaviour
Cast identity is (source_type, target_type). There is no ALTER CAST in PostgreSQL. Any property change emits DROP CAST + CREATE CAST — DESTRUCTIVE. Dependents are checked before the drop.