Re: \ escapes in check constraint strings? - Mailing list pgsql-bugs

From Bruno Wolff III
Subject Re: \ escapes in check constraint strings?
Date
Msg-id 20040716220140.GA8868@wolff.to
Whole thread Raw
In response to \ escapes in check constraint strings?  (Bruno Wolff III <bruno@wolff.to>)
List pgsql-bugs
On Fri, Jul 16, 2004 at 16:49:25 -0500,
  Bruno Wolff III <bruno@wolff.to> wrote:
> 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.

I think I have figured out what was going on. It looks like [\] in 7.3
regular expressions would try to match a \, but in 7.4 the ] was escaped
resulting in an invalid regular expression. So the real problem was
that in 7.3 I was using something like '[\\]' when I should have been
using '[\\\\]'.
While I was trying to figure out what was going on I was confused by
the \d output putting 2 \s where there was only one. Presumably this
is so the output could be used to recreate the constraint. This seems
reasonable, but it this particular case confused me.

pgsql-bugs by date:

Previous
From: Bruno Wolff III
Date:
Subject: \ escapes in check constraint strings?
Next
From: Peter Eisentraut
Date:
Subject: Re: \ escapes in check constraint strings?