Hi Yugo On 03.07.25 17:04, Yugo Nagata wrote: > Currently, when creating an enum type, duplicate labels are caught by a unique > index on pg_enum, resulting in a generic error message. > > postgres=# create type t as enum ('a','b','a'); > ERROR: duplicate key value violates unique constraint > "pg_enum_typid_label_index" > DETAIL: Key (enumtypid, enumlabel)=(16418, a) already exists. > > I propose adding an explicit check for duplicate labels during enum creation, > so that a more user-friendly and descriptive error message can be produced, > similar to what is already done in ALTER TYPE ... ADD VALUE > or ALTER TYPE ... RENAME VALUE .. TO .... > > With the attached patch applied, the error message becomes: > > ERROR: label "a" used more than once >
The error message for already existing enum labels starts with "enum", e.g. ERROR: enum label "bar" already exists. So, perhaps this new error message should follow the same pattern? I also wonder if we need to add tests for it, so that we make sure the new error is triggered prior to the generic one, e.g. in create_type.sql -- check for duplicate enum entries CREATE TYPE den AS ENUM ('foo','bar','foo'); CREATE TYPE en AS ENUM ('foo','bar'); ALTER TYPE en ADD VALUE 'foo'; ALTER TYPE en RENAME VALUE 'foo' TO 'bar'; DROP TYPE en; Regards, Jim