/*
 Assuming you have an enum type like this.
 You want to rename 'pending' to 'lodged'
 */
CREATE TYPE dispute_status AS ENUM('pending', 'resolved', 'open', 'cancelled');

BEGIN;

  ALTER TYPE dispute_status ADD VALUE 'lodged';
  UPDATE dispute SET status = 'lodged' WHERE status = 'pending';

  /* if it was a default value on the column, also do this */
  ALTER TABLE disputes ALTER COLUMN status SET DEFAULT 'lodged';

  /* Make a new temporary type with the enum you want */
  CREATE TYPE dispute_status_new AS ENUM('lodged', 'resolved', 'open', 'cancelled');

  /* Migrate to the new type, specifying the cast to a string */
  ALTER TABLE disputes ALTER COLUMN status SET DATA TYPE dispute_status_new USING status::text;

  /* Switch the types over */
  DROP TYPE dispute_status;
  ALTER TYPE dispute_status_new RENAME TO dispute_status;

COMMIT;
