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:
@@ -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++;
|
||||
|
||||
Reference in New Issue
Block a user