BUG #8153: check constraint results in a lot of casts

From: marc(at)intershop(dot)de
To: pgsql-bugs(at)postgresql(dot)org
Subject: BUG #8153: check constraint results in a lot of casts
Date: 2013-05-13 13:30:24
Message-ID: E1Ubspc-0005ly-3s@wrigleys.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

The following bug has been logged on the website:

Bug reference: 8153
Logged by: Marc Mamin
Email address: marc(at)intershop(dot)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 = 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 = ANY
(ARRAY['a'::character varying, 'b'::character varying] ));
(3) alter table test add constraint test_ck_3 check ( a = 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 = ANY (ARRAY['a'::character varying,
'b'::character varying]::text[]))
"test_ck_2" CHECK (a::text = ANY (ARRAY['a'::character varying,
'b'::character varying]::text[]))
"test_ck_3" CHECK (a::text = ANY (ARRAY['a'::text, 'b'::text]))

best regards,

Marc Mamin

Browse pgsql-bugs by date

  From Date Subject
Next Message willybas 2013-05-13 14:00:16 BUG #8154: pg_dump throws error beacause of field called "new".
Previous Message Heikki Linnakangas 2013-05-13 10:45:22 Re: Inconsistency between TO_CHAR() and TO_NUMBER()