Devi definire un cast da utilizzare perché non è disponibile un cast predefinito.
Se tutti i valori in varcharColumn
rispettare la definizione enum, dovrebbe funzionare quanto segue:
alter table foo
ALTER COLUMN varcharColumn TYPE enum_type using varcharColumn::enum_type;
Personalmente non mi piacciono le enumerazioni perché sono piuttosto rigide. Preferisco un vincolo di controllo su una colonna varchar se voglio limitare i valori in una colonna. Oppure, se l'elenco dei valori cambia spesso e cresce, una buona vecchia "tabella di ricerca" con un vincolo di chiave esterna.