Problem with do_quote_ident()

Поиск
Список
Период
Сортировка
От Bruce Momjian
Тема Problem with do_quote_ident()
Дата
Msg-id 200203272054.g2RKsdM22367@candle.pha.pa.us
обсуждение исходный текст
Ответы Re: Problem with do_quote_ident()  (Jan Wieck <janwieck@yahoo.com>)
Список pgsql-hackers
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 USERtest=> 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 pgman@candle.pha.pa.us               |  (610)
853-3000+  If your life is a hard drive,     |  830 Blythe Avenue +  Christ can be your backup.        |  Drexel Hill,
Pennsylvania19026
 


В списке pgsql-hackers по дате отправления:

Предыдущее
От: Stephan Szabo
Дата:
Сообщение: Re: RI triggers and schemas
Следующее
От: Jan Wieck
Дата:
Сообщение: Re: Problem with do_quote_ident()