mirror of
https://github.com/postgres/postgres.git
synced 2025-05-16 00:02:54 -04:00
Backpatch: Fix tsvector_out() and tsquery_out() to escape backslesh, add test of that.
Patch by Bruce Momjian <bruce@momjian.us>
This commit is contained in:
parent
bf519d64f4
commit
7b85567962
@ -331,6 +331,12 @@ SELECT '''the wether'':dc & '' sKies '':BC & a:d b:a';
|
|||||||
'the wether':dc & ' sKies ':BC & a:d b:a
|
'the wether':dc & ' sKies ':BC & a:d b:a
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
|
SELECT tsvector_in(tsvector_out($$'\\as' ab\c ab\\c AB\\\c ab\\\\c$$::tsvector)), tsquery_in(tsquery_out($$'\\as'$$::tsquery));
|
||||||
|
tsvector_in | tsquery_in
|
||||||
|
----------------------------------------+------------
|
||||||
|
'\\as' 'abc' 'AB\\c' 'ab\\c' 'ab\\\\c' | '\\as'
|
||||||
|
(1 row)
|
||||||
|
|
||||||
select 'a' < 'b & c'::tsquery;
|
select 'a' < 'b & c'::tsquery;
|
||||||
?column?
|
?column?
|
||||||
----------
|
----------
|
||||||
|
@ -765,6 +765,11 @@ infix(INFIX * in, bool first)
|
|||||||
*(in->cur) = '\'';
|
*(in->cur) = '\'';
|
||||||
in->cur++;
|
in->cur++;
|
||||||
}
|
}
|
||||||
|
else if (t_iseq(op, '\\'))
|
||||||
|
{
|
||||||
|
*(in->cur) = '\\';
|
||||||
|
in->cur++;
|
||||||
|
}
|
||||||
COPYCHAR(in->cur, op);
|
COPYCHAR(in->cur, op);
|
||||||
|
|
||||||
clen = pg_mblen(op);
|
clen = pg_mblen(op);
|
||||||
|
@ -67,6 +67,8 @@ SELECT '1&(2&(4&(5|!6)))'::tsquery;
|
|||||||
SELECT E'1&(''2''&('' 4''&(\\|5 | ''6 \\'' !|&'')))'::tsquery;
|
SELECT E'1&(''2''&('' 4''&(\\|5 | ''6 \\'' !|&'')))'::tsquery;
|
||||||
SELECT '''the wether'':dc & '' sKies '':BC & a:d b:a';
|
SELECT '''the wether'':dc & '' sKies '':BC & a:d b:a';
|
||||||
|
|
||||||
|
SELECT tsvector_in(tsvector_out($$'\\as' ab\c ab\\c AB\\\c ab\\\\c$$::tsvector)), tsquery_in(tsquery_out($$'\\as'$$::tsquery));
|
||||||
|
|
||||||
select 'a' < 'b & c'::tsquery;
|
select 'a' < 'b & c'::tsquery;
|
||||||
select 'a' > 'b & c'::tsquery;
|
select 'a' > 'b & c'::tsquery;
|
||||||
select 'a | f' < 'b & c'::tsquery;
|
select 'a | f' < 'b & c'::tsquery;
|
||||||
|
@ -550,6 +550,14 @@ tsvector_out(PG_FUNCTION_ARGS)
|
|||||||
curout = outbuf + pos;
|
curout = outbuf + pos;
|
||||||
*curout++ = '\'';
|
*curout++ = '\'';
|
||||||
}
|
}
|
||||||
|
else if (t_iseq(curin, '\\'))
|
||||||
|
{
|
||||||
|
int4 pos = curout - outbuf;
|
||||||
|
|
||||||
|
outbuf = (char *) repalloc((void *) outbuf, ++lenbuf);
|
||||||
|
curout = outbuf + pos;
|
||||||
|
*curout++ = '\\';
|
||||||
|
}
|
||||||
while (len--)
|
while (len--)
|
||||||
*curout++ = *curin++;
|
*curout++ = *curin++;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user