The following bug has been logged on the website:
Bug reference: 8153
Logged by: Marc Mamin
Email address: marc@intershop.de
PostgreSQL version: 9.2.4
Operating system: Linux & windows
Description: =
hello,
This is not a functional bugs, but it appers (at least for me...) that
following constraint gets defined with some unecessary overweight:
create table test (a varchar);
(1) alter table test add constraint test_ck check ( a in ('a','b'));
I'd expect this to be resolved in CHECK (a =3D ANY (ARRAY['a'::character
varying, 'b'::character varying]) ).
I've tried further variantes. (3) looks better but there is always a cast on
the table side.
(2) alter table test add constraint test_ck_2 check ( a =3D ANY
(ARRAY['a'::character varying, 'b'::character varying] )); =
(3) alter table test add constraint test_ck_3 check ( a =3D ANY
(ARRAY['a'::text, 'b'] )); =
\d+ test
Table "public.test"
Column | Type | Modifiers | Storage | Stats target |
Description
--------+-------------------+-----------+----------+--------------+--------=
-----
a | character varying | | extended | |
Check constraints:
"test_ck" CHECK (a::text =3D ANY (ARRAY['a'::character varying,
'b'::character varying]::text[]))
"test_ck_2" CHECK (a::text =3D ANY (ARRAY['a'::character varying,
'b'::character varying]::text[]))
"test_ck_3" CHECK (a::text =3D ANY (ARRAY['a'::text, 'b'::text]))
best regards,
Marc Mamin