just realizing that it is better to limit the uses of RANGE.

git-svn-id: file:///svn/phpbb/trunk@6420 89ea8834-ac86-4346-8a33-228a782c2dd0
This commit is contained in:
Meik Sievertsen 2006-09-30 15:06:03 +00:00
parent b08c54f35e
commit 4c2e2b83c7
2 changed files with 6 additions and 26 deletions

View file

@ -361,7 +361,6 @@ class acp_forums
$end = $start + $batch_size; $end = $start + $batch_size;
// Sync all topics in batch mode... // Sync all topics in batch mode...
// topic_moved
sync('topic_approved', 'range', 'topic_id BETWEEN ' . $start . ' AND ' . $end, true, false); sync('topic_approved', 'range', 'topic_id BETWEEN ' . $start . ' AND ' . $end, true, false);
sync('topic', 'range', 'topic_id BETWEEN ' . $start . ' AND ' . $end, true, true); sync('topic', 'range', 'topic_id BETWEEN ' . $start . ' AND ' . $end, true, true);

View file

@ -1036,7 +1036,7 @@ function sync($mode, $where_type = '', $where_ids = '', $resync_parents = false,
$where_ids = ($where_ids) ? array((int) $where_ids) : array(); $where_ids = ($where_ids) ? array((int) $where_ids) : array();
} }
if ($mode == 'forum' || $mode == 'topic') if ($mode == 'forum' || $mode == 'topic' || $mode == 'topic_approved')
{ {
if (!$where_type) if (!$where_type)
{ {
@ -1068,33 +1068,14 @@ function sync($mode, $where_type = '', $where_ids = '', $resync_parents = false,
} }
else else
{ {
if (!$where_type) if (!sizeof($where_ids))
{ {
$where_sql = ''; return;
$where_sql_and = 'WHERE';
} }
else if ($where_type == 'range')
{
// Only check a range of topics/forums. For instance: 'topic_id BETWEEN 1 AND 60'
$where_sql = 'WHERE (' . $mode{0} . ".$where_ids)";
$where_sql_and = $where_sql . "\n\tAND";
}
else
{
// Do not sync the "global forum"
$where_ids = array_diff($where_ids, array(0));
if (!sizeof($where_ids)) // $where_type contains the field for the where clause (forum_id, topic_id)
{ $where_sql = 'WHERE ' . $db->sql_in_set($mode{0} . '.' . $where_type, $where_ids);
// Empty array with IDs. This means that we don't have any work to do. Just return. $where_sql_and = $where_sql . "\n\tAND";
return;
}
// Limit the topics/forums we are syncing, use specific topic/forum IDs.
// $where_type contains the field for the where clause (forum_id, topic_id)
$where_sql = 'WHERE ' . $db->sql_in_set($mode{0} . '.' . $where_type, $where_ids);
$where_sql_and = $where_sql . "\n\tAND";
}
} }
switch ($mode) switch ($mode)