I see the following behaivor on 7.4.3 and 7.4 stable from about a week ago:
bruno=> create table test ();
CREATE TABLE
bruno=> alter table test add constraint test2 check('\\' = '');
ALTER TABLE
bruno=> \d test
Table "public.test"
Column | Type | Modifiers
--------+------+-----------
Check constraints:
"test2" CHECK ('\\'::text = ''::text)
bruno=> select '\\';
?column?
----------
\
(1 row)
I didn't see \\ left as \\ in at least some 7.3 versions.
I think this is a bug, but maybe there are different escape rules for
strings in check constraints.
In the real case that this derives from I was getting a different number
of backslashes than I expected in a regular expression.