El tipo de sistema de Postgres puede entrar en crisis por varios medios. Los tipos estan divididos en tipos base y tipos compuestos. Los tipos base son precisamente eso, como int4, que es implementado en leguajes como C. Generalmente se corresponde a lo comunmente conocido como "abstract data types"; Postgres puede operar solo con los tipos de metodos provistos por el usuario y solo se entiende el comportamiento de los tipos de la extension que el usuario describe. Los tipos compuestos son los creados cuando el usuario crea una clase. EMP es un ejemplo de un tipo de composicion.
Postgres almacena estos tipos en solo un sentido (que el fichero que almacena todas las instancias de las clases) pero el usuario puede "mirar dentro" de estos tipos desde el lenguaje de peticion y optimizar sus recuperacion por (por ejemplo) definir indices en los atributos. La base de tipos de Postgres esta mas dividida en tipos y tipos definidos por el usuario. Los tipos de construccion (como int4) son los que son compilados dentro del sistema. Los tipos definidos por el usuario son creados por el usuario de la manera descrita abajo.