On Fri, Jul 16, 2004 at 16:49:25 -0500, Bruno Wolff III <[EMAIL PROTECTED]> 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. ---------------------------(end of broadcast)--------------------------- TIP 5: Have you checked our extensive FAQ? http://www.postgresql.org/docs/faqs/FAQ.html