mirror of
https://github.com/MariaDB/server.git
synced 2025-08-05 13:16:09 +03:00
backport bug#2708 fix from 4.1
myisam/ft_boolean_search.c: perlify comment
This commit is contained in:
@@ -360,7 +360,7 @@ err:
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* returns 1 if str0 ~= /\<str1\>/ */
|
/* returns 1 if str0 ~= /\bstr1\b/ */
|
||||||
static int _ftb_strstr(const byte *s0, const byte *e0,
|
static int _ftb_strstr(const byte *s0, const byte *e0,
|
||||||
const byte *s1, const byte *e1,
|
const byte *s1, const byte *e1,
|
||||||
CHARSET_INFO *cs)
|
CHARSET_INFO *cs)
|
||||||
|
@@ -124,20 +124,22 @@ byte ft_get_word(byte **start, byte *end, FT_WORD *word, FTB_PARAM *param)
|
|||||||
for (;doc<end;doc++)
|
for (;doc<end;doc++)
|
||||||
{
|
{
|
||||||
if (true_word_char(*doc)) break;
|
if (true_word_char(*doc)) break;
|
||||||
if (*doc == FTB_RQUOT && param->quot) {
|
if (*doc == FTB_RQUOT && param->quot)
|
||||||
|
{
|
||||||
param->quot=doc;
|
param->quot=doc;
|
||||||
*start=doc+1;
|
*start=doc+1;
|
||||||
return 3; /* FTB_RBR */
|
return 3; /* FTB_RBR */
|
||||||
}
|
}
|
||||||
if ((*doc == FTB_LBR || *doc == FTB_RBR || *doc == FTB_LQUOT)
|
if (!param->quot)
|
||||||
&& !param->quot)
|
{
|
||||||
|
if (*doc == FTB_LBR || *doc == FTB_RBR || *doc == FTB_LQUOT)
|
||||||
{
|
{
|
||||||
/* param->prev=' '; */
|
/* param->prev=' '; */
|
||||||
*start=doc+1;
|
*start=doc+1;
|
||||||
if (*doc == FTB_LQUOT) param->quot=*start;
|
if (*doc == FTB_LQUOT) param->quot=*start;
|
||||||
return (*doc == FTB_RBR)+2;
|
return (*doc == FTB_RBR)+2;
|
||||||
}
|
}
|
||||||
if (param->prev == ' ' && !param->quot)
|
if (param->prev == ' ')
|
||||||
{
|
{
|
||||||
if (*doc == FTB_YES ) { param->yesno=+1; continue; } else
|
if (*doc == FTB_YES ) { param->yesno=+1; continue; } else
|
||||||
if (*doc == FTB_EGAL) { param->yesno= 0; continue; } else
|
if (*doc == FTB_EGAL) { param->yesno= 0; continue; } else
|
||||||
@@ -146,6 +148,7 @@ byte ft_get_word(byte **start, byte *end, FT_WORD *word, FTB_PARAM *param)
|
|||||||
if (*doc == FTB_DEC ) { param->plusminus--; continue; } else
|
if (*doc == FTB_DEC ) { param->plusminus--; continue; } else
|
||||||
if (*doc == FTB_NEG ) { param->pmsign=!param->pmsign; continue; }
|
if (*doc == FTB_NEG ) { param->pmsign=!param->pmsign; continue; }
|
||||||
}
|
}
|
||||||
|
}
|
||||||
param->prev=*doc;
|
param->prev=*doc;
|
||||||
param->yesno=(FTB_YES==' ') ? 1 : (param->quot != 0);
|
param->yesno=(FTB_YES==' ') ? 1 : (param->quot != 0);
|
||||||
param->plusminus=param->pmsign=0;
|
param->plusminus=param->pmsign=0;
|
||||||
@@ -170,6 +173,11 @@ byte ft_get_word(byte **start, byte *end, FT_WORD *word, FTB_PARAM *param)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (param->quot)
|
||||||
|
{
|
||||||
|
param->quot=*start=doc;
|
||||||
|
return 3; /* FTB_RBR */
|
||||||
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -122,6 +122,9 @@ select * from t1 where MATCH a,b AGAINST ('+(support collections) +foobar*' IN B
|
|||||||
a b
|
a b
|
||||||
select * from t1 where MATCH a,b AGAINST ('+(+(support collections)) +foobar*' IN BOOLEAN MODE);
|
select * from t1 where MATCH a,b AGAINST ('+(+(support collections)) +foobar*' IN BOOLEAN MODE);
|
||||||
a b
|
a b
|
||||||
|
select * from t1 where MATCH a,b AGAINST('"space model' IN BOOLEAN MODE);
|
||||||
|
a b
|
||||||
|
Full-text search in MySQL implements vector space model
|
||||||
select * from t1 where MATCH a AGAINST ("search" IN BOOLEAN MODE);
|
select * from t1 where MATCH a AGAINST ("search" IN BOOLEAN MODE);
|
||||||
a b
|
a b
|
||||||
Full-text search in MySQL implements vector space model
|
Full-text search in MySQL implements vector space model
|
||||||
|
@@ -57,6 +57,10 @@ select * from t1 where MATCH a,b AGAINST ('"xt indexes"' IN BOOLEAN MODE);
|
|||||||
select * from t1 where MATCH a,b AGAINST ('+(support collections) +foobar*' IN BOOLEAN MODE);
|
select * from t1 where MATCH a,b AGAINST ('+(support collections) +foobar*' IN BOOLEAN MODE);
|
||||||
select * from t1 where MATCH a,b AGAINST ('+(+(support collections)) +foobar*' IN BOOLEAN MODE);
|
select * from t1 where MATCH a,b AGAINST ('+(+(support collections)) +foobar*' IN BOOLEAN MODE);
|
||||||
|
|
||||||
|
# bug#2708, bug#3870 crash
|
||||||
|
|
||||||
|
select * from t1 where MATCH a,b AGAINST('"space model' IN BOOLEAN MODE);
|
||||||
|
|
||||||
# boolean w/o index:
|
# boolean w/o index:
|
||||||
|
|
||||||
select * from t1 where MATCH a AGAINST ("search" IN BOOLEAN MODE);
|
select * from t1 where MATCH a AGAINST ("search" IN BOOLEAN MODE);
|
||||||
|
Reference in New Issue
Block a user