Re: Improve error message for duplicate labels in enum types
От | Jim Jones |
---|---|
Тема | Re: Improve error message for duplicate labels in enum types |
Дата | |
Msg-id | e103e051-c0ee-44c0-98b6-23832f4c7b06@uni-muenster.de обсуждение исходный текст |
Ответ на | Improve error message for duplicate labels in enum types (Yugo Nagata <nagata@sraoss.co.jp>) |
Список | pgsql-hackers |
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
В списке pgsql-hackers по дате отправления: