I see in quote.c::do_quote_ident():

        *cp2++ = '"';
        while (len-- > 0)
        {
                if (*cp1 == '"')
                        *cp2++ = '"';
                if (*cp1 == '\\')
                        *cp2++ = '\\';
                *cp2++ = *cp1++;
        }
        *cp2++ = '"';

I am confused by the backslash handling. In my tests, a backslash in a
double-quoted string does not require two backslashes:
        
        test=> create user "a\d";
        CREATE USER
        test=> select usename, length(usename) from pg_user;
         usename  | length 
        ----------+--------
         a\d      |      3

This is because a double-quote in a double-quoted string is entered as
"", not \".

Is it adding another backslash because it assumes the result will appear
in another quoted string?

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  [EMAIL PROTECTED]               |  (610) 853-3000
  +  If your life is a hard drive,     |  830 Blythe Avenue
  +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026

---------------------------(end of broadcast)---------------------------
TIP 2: you can get off all lists at once with the unregister command
    (send "unregister YourEmailAddressHere" to [EMAIL PROTECTED])

Reply via email to