mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-28 06:08:52 +00:00
Merge pull request #3476 from brunoais/ticket/13674
[ticket/13674] Change MySQL native total search results calculation
This commit is contained in:
commit
f0619b481f
1 changed files with 8 additions and 11 deletions
|
@ -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['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['GROUP_BY'] = ($group_by) ? (($type == 'posts') ? 'p.post_id' : 'p.topic_id') . ', ' . $sort_by_sql[$sort_key] : '';
|
||||||
$sql_array['ORDER_BY'] = $sql_sort;
|
$sql_array['ORDER_BY'] = $sql_sort;
|
||||||
|
@ -838,19 +845,9 @@ class fulltext_native extends \phpbb\search\base
|
||||||
}
|
}
|
||||||
$this->db->sql_freeresult($result);
|
$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)
|
if (!$total_results && $is_mysql)
|
||||||
{
|
{
|
||||||
// Count rows for the executed queries. Replace $select within $sql with SQL_CALC_FOUND_ROWS, and run it
|
// Get the number of results as calculated by MySQL
|
||||||
$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);
|
|
||||||
|
|
||||||
$sql_count = 'SELECT FOUND_ROWS() as total_results';
|
$sql_count = 'SELECT FOUND_ROWS() as total_results';
|
||||||
$result = $this->db->sql_query($sql_count);
|
$result = $this->db->sql_query($sql_count);
|
||||||
$total_results = (int) $this->db->sql_fetchfield('total_results');
|
$total_results = (int) $this->db->sql_fetchfield('total_results');
|
||||||
|
|
Loading…
Add table
Reference in a new issue