CREATE TYPE $name$ AS
    ( [ { $attribute_name$ $data_type$ [ COLLATE $collation$ ] } [ , ... ] ] )

CREATE TYPE $name$ AS ENUM
    ( [ '$label$' [ , ... ] ] )

CREATE TYPE $name$ AS RANGE (
    SUBTYPE = $subtype$
    [ , SUBTYPE_OPCLASS = $subtype_operator_class$ ]
    [ , COLLATION = $collation$ ]
    [ , CANONICAL = $canonical_function$ ]
    [ , SUBTYPE_DIFF = $subtype_diff_function$ ]
    [ , MULTIRANGE_TYPE_NAME = $multirange_type_name$ ] )

CREATE TYPE $name$ (
    INPUT = $input_function$,
    OUTPUT = $output_function$
    [ , RECEIVE = $receive_function$ ]
    [ , SEND = $send_function$ ]
    [ , TYPMOD_IN = $type_modifier_input_function$ ]
    [ , TYPMOD_OUT = $type_modifier_output_function$ ]
    [ , ANALYZE = $analyze_function$ ]
    [ , SUBSCRIPT = $subscript_function$ ]
    [ , INTERNALLENGTH = { $internallength$ | VARIABLE } ]
    [ , PASSEDBYVALUE ]
    [ , ALIGNMENT = $alignment$ ]
    [ , STORAGE = $storage$ ]
    [ , LIKE = $like_type$ ]
    [ , CATEGORY = $category$ ]
    [ , PREFERRED = $preferred$ ]
    [ , DEFAULT = $default$ ]
    [ , ELEMENT = $element$ ]
    [ , DELIMITER = $delimiter$ ]
    [ , COLLATABLE = $collatable$ ] )

CREATE TYPE $name$
