aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/phpbb
diff options
context:
space:
mode:
authorDhruv Goel <dhruv.goel92@gmail.com>2015-03-14 23:28:31 +0800
committerDhruv Goel <dhruv.goel92@gmail.com>2015-03-14 23:28:31 +0800
commitf0619b481f200dd225f98709fad2d1662ec3cdff (patch)
tree4154d8d74aadfc49d80c3eea805d505e27c123d6 /phpBB/phpbb
parente132e9ba76e63f71a6019b79c7a42417b3b633b4 (diff)
parent9b030fd174045b2ebcd87f005a15ef703a4168c6 (diff)
downloadforums-f0619b481f200dd225f98709fad2d1662ec3cdff.tar
forums-f0619b481f200dd225f98709fad2d1662ec3cdff.tar.gz
forums-f0619b481f200dd225f98709fad2d1662ec3cdff.tar.bz2
forums-f0619b481f200dd225f98709fad2d1662ec3cdff.tar.xz
forums-f0619b481f200dd225f98709fad2d1662ec3cdff.zip
Merge pull request #3476 from brunoais/ticket/13674
[ticket/13674] Change MySQL native total search results calculation
Diffstat (limited to 'phpBB/phpbb')
-rw-r--r--phpBB/phpbb/search/fulltext_native.php19
1 files changed, 8 insertions, 11 deletions
diff --git a/phpBB/phpbb/search/fulltext_native.php b/phpBB/phpbb/search/fulltext_native.php
index 93ea46ca60..4d02dd1cbf 100644
--- a/phpBB/phpbb/search/fulltext_native.php
+++ b/phpBB/phpbb/search/fulltext_native.php
@@ -823,6 +823,13 @@ class fulltext_native extends \phpbb\search\base
);
}
+ // if using mysql and the total result count is not calculated yet, get it from the db
+ if (!$total_results && $is_mysql)
+ {
+ // Also count rows for the query as if there was not LIMIT. Add SQL_CALC_FOUND_ROWS to SQL
+ $sql_array['SELECT'] = 'SQL_CALC_FOUND_ROWS ' . $sql_array['SELECT'];
+ }
+
$sql_array['WHERE'] = implode(' AND ', $sql_where);
$sql_array['GROUP_BY'] = ($group_by) ? (($type == 'posts') ? 'p.post_id' : 'p.topic_id') . ', ' . $sort_by_sql[$sort_key] : '';
$sql_array['ORDER_BY'] = $sql_sort;
@@ -838,19 +845,9 @@ class fulltext_native extends \phpbb\search\base
}
$this->db->sql_freeresult($result);
- // if we use mysql and the total result count is not cached yet, retrieve it from the db
if (!$total_results && $is_mysql)
{
- // Count rows for the executed queries. Replace $select within $sql with SQL_CALC_FOUND_ROWS, and run it
- $sql_array_copy = $sql_array;
- $sql_array_copy['SELECT'] = 'SQL_CALC_FOUND_ROWS p.post_id ';
-
- $sql_calc = $this->db->sql_build_query('SELECT', $sql_array_copy);
- unset($sql_array_copy);
-
- $this->db->sql_query($sql_calc);
- $this->db->sql_freeresult($result);
-
+ // Get the number of results as calculated by MySQL
$sql_count = 'SELECT FOUND_ROWS() as total_results';
$result = $this->db->sql_query($sql_count);
$total_results = (int) $this->db->sql_fetchfield('total_results');