Amit Langote <amitlangote09@xxxxxxxxx> writes: > destdb=# ALTER TABLE c ADD CONSTRAINT p_a_check CHECK (a IN ('a', 'b', 'c')); > destdb=# \d c > ... > Check constraints: > "p_a_check" CHECK (a::text = ANY (ARRAY['a'::character varying, > 'b'::character varying, 'c'::character varying]::text[])) Hm. It seems like the parser is doing something weird with IN there. If you just do a simple comparison the constant ends up as TEXT to start with: regression=# CREATE TABLE pp (a varchar, CHECK (a = 'a')); regression=# \d pp ... Check constraints: "pp_a_check" CHECK (a::text = 'a'::text) Or for that matter regression=# CREATE TABLE p (a varchar, CHECK (a = any(array['a', 'b', 'c']))); regression=# \d p ... Check constraints: "p_a_check" CHECK (a::text = ANY (ARRAY['a'::text, 'b'::text, 'c'::text])) I wonder why you don't get an array of text constants in the IN case. regards, tom lane -- Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-general