Re: Use of backslash in tsearch2

Поиск
Список
Период
Сортировка
Искать
От
Bruce Momjian
Тема
Re: Use of backslash in tsearch2
Дата
Msg-id
200608220048.k7M0m6x10224@momjian.us
Ответ на
Список
Дерево обсуждения
Use of backslash in tsearch2 Bruce Momjian <bruce@momjian.us>
Re: Use of backslash in tsearch2 Bruce Momjian <bruce@momjian.us>
Re: Use of backslash in tsearch2 Teodor Sigaev <teodor@sigaev.ru>
Re: [HACKERS] Use of backslash in tsearch2 Teodor Sigaev <teodor@sigaev.ru>
Re: [HACKERS] Use of backslash in tsearch2 Bruce Momjian <bruce@momjian.us>
Re: Use of backslash in tsearch2 Tom Lane <tgl@sss.pgh.pa.us>
Re: Use of backslash in tsearch2 Bruce Momjian <bruce@momjian.us>
Bruce Momjian wrote:
> Bruce Momjian wrote:
> > 
> > I backed out the patch, attached, and it has fixed the regression
> > problem.  What has me confused is that is looks like it is checking for
> > ', then putting \, which doesn't make a lot of sense, but the regression
> > output is corrected, so I just don't get it.  Here is an example:
> > 
> > 	test=> SELECT E'''1 \\''2''';
> > 	 ?column?
> > 	----------
> > 	 '1 \'2'
> > 
> > My only guess is that the output is somehow a single-quoted string
> > itself, and in fact \' should become ''.  Is that right?  Basically they
> > are doing \' in their output, and it should be doing '', but then the
> > query above would be wrong and shouldn't be using \'.
> 
> As part of the move to support standard-conforming strings and treat
> backslash literally, I reviewed the tsearch2 code and found two place
> that seemed to use \' rather than '', and generated the attached patch. 
> ('' is standards conforming.)  However, when I fixed the code, the
> regression tests failed.
> 
> Teodor, are the new attached regression results correct?  If so, I will
> apply the patch and update the expected file.

Updated patch attached.  The previous one was reversed.

-- 
  Bruce Momjian   bruce@momjian.us
  EnterpriseDB    http://www.enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +
Index: contrib/tsearch2/query.c
===================================================================
RCS file: /cvsroot/pgsql/contrib/tsearch2/query.c,v
retrieving revision 1.26
diff -c -c -r1.26 query.c
*** contrib/tsearch2/query.c	19 May 2006 04:39:47 -0000	1.26
--- contrib/tsearch2/query.c	21 Aug 2006 23:58:20 -0000
***************
*** 748,754 ****
  		{
  			if ( t_iseq(op, '\'') )
  			{
! 				*(in->cur) = '\\';
  				in->cur++;
  			}
  			COPYCHAR(in->cur,op);
--- 748,754 ----
  		{
  			if ( t_iseq(op, '\'') )
  			{
! 				*(in->cur) = '\'';
  				in->cur++;
  			}
  			COPYCHAR(in->cur,op);
Index: contrib/tsearch2/tsvector.c
===================================================================
RCS file: /cvsroot/pgsql/contrib/tsearch2/tsvector.c,v
retrieving revision 1.20
diff -c -c -r1.20 tsvector.c
*** contrib/tsearch2/tsvector.c	11 Jul 2006 18:26:10 -0000	1.20
--- contrib/tsearch2/tsvector.c	21 Aug 2006 23:58:20 -0000
***************
*** 529,535 ****
  
  				outbuf = (char *) repalloc((void *) outbuf, ++lenbuf);
  				curout = outbuf + pos;
! 				*curout++ = '\\';
  			}
  			while(len--)
  				*curout++ = *curin++;
--- 529,535 ----
  
  				outbuf = (char *) repalloc((void *) outbuf, ++lenbuf);
  				curout = outbuf + pos;
! 				*curout++ = '\'';
  			}
  			while(len--)
  				*curout++ = *curin++;
В списке pgsql-patches по дате отправления
От: Bruce Momjian
Дата:
От: Bruce Momjian
Дата:
FAQ