diff options
| author | Marc Alexander <admin@m-a-styles.de> | 2017-07-16 15:00:22 +0200 |
|---|---|---|
| committer | Marc Alexander <admin@m-a-styles.de> | 2017-07-16 15:00:22 +0200 |
| commit | 65aaef1f83920fc25266fbea5608427bb930f329 (patch) | |
| tree | 1e15869f2ef0e321b2bec513946bb3e26824176b /phpBB/phpbb/search/fulltext_mysql.php | |
| parent | 50d2e337b02e8bdec80ed0672cf2e1fe384b6f3e (diff) | |
| parent | 149375253685b3a38996f63015a74b7a0f53aa14 (diff) | |
| download | forums-65aaef1f83920fc25266fbea5608427bb930f329.tar forums-65aaef1f83920fc25266fbea5608427bb930f329.tar.gz forums-65aaef1f83920fc25266fbea5608427bb930f329.tar.bz2 forums-65aaef1f83920fc25266fbea5608427bb930f329.tar.xz forums-65aaef1f83920fc25266fbea5608427bb930f329.zip | |
Merge branch 'prep-release-3.1.11' into 3.1.x
Diffstat (limited to 'phpBB/phpbb/search/fulltext_mysql.php')
| -rw-r--r-- | phpBB/phpbb/search/fulltext_mysql.php | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/phpBB/phpbb/search/fulltext_mysql.php b/phpBB/phpbb/search/fulltext_mysql.php index f8bda9ae81..64a63e83e0 100644 --- a/phpBB/phpbb/search/fulltext_mysql.php +++ b/phpBB/phpbb/search/fulltext_mysql.php @@ -272,6 +272,27 @@ class fulltext_mysql extends \phpbb\search\base foreach ($this->split_words as $i => $word) { + // Check for not allowed search queries for InnoDB. + // We assume similar restrictions for MyISAM, which is usually even + // slower but not as restrictive as InnoDB. + // InnoDB full-text search does not support the use of a leading + // plus sign with wildcard ('+*'), a plus and minus sign + // combination ('+-'), or leading a plus and minus sign combination. + // InnoDB full-text search only supports leading plus or minus signs. + // For example, InnoDB supports '+apple' but does not support 'apple+'. + // Specifying a trailing plus or minus sign causes InnoDB to report + // a syntax error. InnoDB full-text search does not support the use + // of multiple operators on a single search word, as in this example: + // '++apple'. Use of multiple operators on a single search word + // returns a syntax error to standard out. + // Also, ensure that the wildcard character is only used at the + // end of the line as it's intended by MySQL. + if (preg_match('#^(\+[+-]|\+\*|.+[+-]$|.+\*(?!$))#', $word)) + { + unset($this->split_words[$i]); + continue; + } + $clean_word = preg_replace('#^[+\-|"]#', '', $word); // check word length |
