DROP TYPE will remove a user type from the system catalogs.
Only the owner of a type can remove it.
It is the user's responsibility to remove any operators, functions, aggregates, access methods, subtypes, and tables that use a deleted type. However, the associated array data type (which was automatically created by CREATE TYPE) will be removed automatically.
If a built-in type is removed, the behavior of the server is unpredictable.
A DROP TYPE statement exists in SQL99. As with most other "drop" commands, DROP TYPE in SQL99 requires a "drop behavior" clause to select between dropping all dependent objects or refusing to drop if dependent objects exist:
DROP TYPE name { CASCADE | RESTRICT }
PostgreSQL currently ignores dependencies altogether.
Note that the CREATE TYPE command and the data type extension mechanisms in PostgreSQL differ from SQL99.