| From: | Jan Wieck <janwieck(at)yahoo(dot)com> | 
|---|---|
| To: | Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us> | 
| Cc: | PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org> | 
| Subject: | Re: Problem with do_quote_ident() | 
| Date: | 2002-03-27 21:18:38 | 
| Message-ID: | 200203272118.g2RLIc227802@saturn.janwieck.net | 
| Views: | Whole Thread | Raw Message | Download mbox | Resend email | 
| Thread: | |
| Lists: | pgsql-hackers | 
Bruce Momjian wrote:
> 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?
    I  would  say  it is adding another backslash because it is a
    bug.  If you use quote_ident()  in  a  plpgsql  procedure  to
    build  querystrings  for  EXECUTE  (and you should do it that
    way),  then  it'll  no  handle   identifiers   that   contain
    backslashes correctly.
Jan
--
#======================================================================#
# It's easier to get forgiveness for being wrong than for being right. #
# Let's break this rule - forgive me.                                  #
#================================================== JanWieck(at)Yahoo(dot)com #
_________________________________________________________
Do You Yahoo!?
Get your free @yahoo.com address at http://mail.yahoo.com
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Nicolas Bazin | 2002-03-27 22:34:53 | Re: build of 7.2.1 on SCO Openserver and Unixware 7.1.1 | 
| Previous Message | Bruce Momjian | 2002-03-27 20:54:39 | Problem with do_quote_ident() |