1
0
mirror of https://github.com/postgres/postgres.git synced 2025-12-24 06:01:07 +03:00

Use '' rather than \' for literal single quotes in strings in

/contrib/tsearch2.

Teodor Sigaev
This commit is contained in:
Bruce Momjian
2006-09-02 22:03:30 +00:00
parent 4b636e35a5
commit 0c4f2894f9
3 changed files with 43 additions and 28 deletions

View File

@@ -164,13 +164,14 @@ uniqueentry(WordEntryIN * a, int4 l, char *buf, int4 *outbuflen)
return res + 1 - a;
}
#define WAITWORD 1
#define WAITENDWORD 2
#define WAITWORD 1
#define WAITENDWORD 2
#define WAITNEXTCHAR 3
#define WAITENDCMPLX 4
#define WAITPOSINFO 5
#define INPOSINFO 6
#define WAITPOSINFO 5
#define INPOSINFO 6
#define WAITPOSDELIM 7
#define WAITCHARCMPLX 8
#define RESIZEPRSBUF \
do { \
@@ -270,21 +271,8 @@ gettoken_tsvector(TI_IN_STATE * state)
}
else if (state->state == WAITENDCMPLX)
{
if ( t_iseq(state->prsbuf, '\'') )
{
RESIZEPRSBUF;
*(state->curpos) = '\0';
if (state->curpos == state->word)
ereport(ERROR,
(errcode(ERRCODE_SYNTAX_ERROR),
errmsg("syntax error")));
if (state->oprisdelim)
{
state->prsbuf+=pg_mblen(state->prsbuf);
return 1;
}
else
state->state = WAITPOSINFO;
if ( t_iseq(state->prsbuf, '\'') ) {
state->state = WAITCHARCMPLX;
}
else if ( t_iseq(state->prsbuf, '\\') )
{
@@ -302,6 +290,31 @@ gettoken_tsvector(TI_IN_STATE * state)
state->curpos+=pg_mblen(state->prsbuf);
}
}
else if (state->state == WAITCHARCMPLX)
{
if ( t_iseq(state->prsbuf, '\'') )
{
RESIZEPRSBUF;
COPYCHAR(state->curpos, state->prsbuf);
state->curpos+=pg_mblen(state->prsbuf);
state->state = WAITENDCMPLX;
} else {
RESIZEPRSBUF;
*(state->curpos) = '\0';
if (state->curpos == state->word)
ereport(ERROR,
(errcode(ERRCODE_SYNTAX_ERROR),
errmsg("syntax error")));
if (state->oprisdelim)
{
/* state->prsbuf+=pg_mblen(state->prsbuf); */
return 1;
}
else
state->state = WAITPOSINFO;
continue; /* recheck current character */
}
}
else if (state->state == WAITPOSINFO)
{
if ( t_iseq(state->prsbuf, ':') )
@@ -385,6 +398,8 @@ gettoken_tsvector(TI_IN_STATE * state)
else
/* internal error */
elog(ERROR, "internal error");
/* get next char */
state->prsbuf+=pg_mblen(state->prsbuf);
}
@@ -529,7 +544,7 @@ tsvector_out(PG_FUNCTION_ARGS)
outbuf = (char *) repalloc((void *) outbuf, ++lenbuf);
curout = outbuf + pos;
*curout++ = '\\';
*curout++ = '\'';
}
while(len--)
*curout++ = *curin++;