Re: Improve error message for duplicate labels in enum types
От | Yugo Nagata |
---|---|
Тема | Re: Improve error message for duplicate labels in enum types |
Дата | |
Msg-id | 20250826115534.be9da8378beed34876eaa8d2@sraoss.co.jp обсуждение исходный текст |
Ответ на | Re: Improve error message for duplicate labels in enum types (Jim Jones <jim.jones@uni-muenster.de>) |
Ответы |
Re: Improve error message for duplicate labels in enum types
|
Список | pgsql-hackers |
Hi Jim, On Mon, 25 Aug 2025 10:08:23 +0200 Jim Jones <jim.jones@uni-muenster.de> wrote: > 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? Thank you for taking a look. That makes sense, so I updated the message to: ERROR: enum label "a" used more than once > 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; I also added a test for duplicate enum entries to enum.sql, since tests for existing entries are already there. Regards, Yugo Nagata -- Yugo Nagata <nagata@sraoss.co.jp>
Вложения
В списке pgsql-hackers по дате отправления: