aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid M <davidmj@users.sourceforge.net>2008-02-03 10:19:04 +0000
committerDavid M <davidmj@users.sourceforge.net>2008-02-03 10:19:04 +0000
commit7b262babcd5c862c3068b08da8bba5f48bd5f36a (patch)
tree5b25f810cc36b33ba6ff406dab76377551e7688e
parente9e9e8e69c3aee47d5bfbc24b2fb9f335cddf36a (diff)
downloadforums-7b262babcd5c862c3068b08da8bba5f48bd5f36a.tar
forums-7b262babcd5c862c3068b08da8bba5f48bd5f36a.tar.gz
forums-7b262babcd5c862c3068b08da8bba5f48bd5f36a.tar.bz2
forums-7b262babcd5c862c3068b08da8bba5f48bd5f36a.tar.xz
forums-7b262babcd5c862c3068b08da8bba5f48bd5f36a.zip
Alright, this should give some improved performance :)
This is the end of random seek access to rows. If you have a compelling reason as to why they should stay, contact me. Else, they are gone forevermore... The following API calls are deprecated: acm::sql_rowseek() -> no replacement $db->sql_fetchfield($field, $rownum = false, $query_id = false) -> $db->sql_fetchfield($field, $query_id = false) Initial tests show that phpBB3 over four percent of memory against phpBB3.1 on an empty board. So far so good :) Other cool things: db2, MS SQL ODBC and MS SQL 2005 all use less memory because they do not need to reference the last executed query to handle random access seeks :) P.S. The crazy people using SVN: please report any issues with the new way we itterate through caches, I do not want to miss anything :) git-svn-id: file:///svn/phpbb/trunk@8372 89ea8834-ac86-4346-8a33-228a782c2dd0
-rw-r--r--phpBB/develop/add_permissions.php2
-rwxr-xr-xphpBB/develop/repair_bots.php4
-rw-r--r--phpBB/includes/acm/acm_apc.php37
-rw-r--r--phpBB/includes/acm/acm_eaccelerator.php37
-rw-r--r--phpBB/includes/acm/acm_file.php36
-rw-r--r--phpBB/includes/acm/acm_memcache.php36
-rw-r--r--phpBB/includes/acm/acm_xcache.php36
-rw-r--r--phpBB/includes/acp/acp_database.php2
-rw-r--r--phpBB/includes/db/db2.php45
-rw-r--r--phpBB/includes/db/dbal.php8
-rw-r--r--phpBB/includes/db/firebird.php43
-rw-r--r--phpBB/includes/db/mssql.php23
-rw-r--r--phpBB/includes/db/mssql_2005.php54
-rw-r--r--phpBB/includes/db/mssql_odbc.php54
-rw-r--r--phpBB/includes/db/mysql.php21
-rw-r--r--phpBB/includes/db/mysqli.php21
-rw-r--r--phpBB/includes/db/oracle.php38
-rw-r--r--phpBB/includes/db/postgres.php21
-rw-r--r--phpBB/includes/db/sqlite.php21
-rw-r--r--phpBB/includes/functions_admin.php2
-rw-r--r--phpBB/includes/functions_convert.php4
21 files changed, 45 insertions, 500 deletions
diff --git a/phpBB/develop/add_permissions.php b/phpBB/develop/add_permissions.php
index 035c23f49c..956b830465 100644
--- a/phpBB/develop/add_permissions.php
+++ b/phpBB/develop/add_permissions.php
@@ -250,7 +250,7 @@ function mass_auth($ug_type, $forum_id, $ug_id, $acl_list, $setting)
$sql = 'SELECT group_id FROM ' . GROUPS_TABLE . "
WHERE group_name = '" . strtoupper($ug_id) . "'";
$result = $db->sql_query_limit($sql, 1);
- $id = (int) $db->sql_fetchfield('group_id', 0, $result);
+ $id = (int) $db->sql_fetchfield('group_id', $result);
$db->sql_freeresult($result);
if (!$id)
diff --git a/phpBB/develop/repair_bots.php b/phpBB/develop/repair_bots.php
index c5aaa75d9b..4dae1e1091 100755
--- a/phpBB/develop/repair_bots.php
+++ b/phpBB/develop/repair_bots.php
@@ -98,7 +98,7 @@ function add_bots($bots)
$sql = 'SELECT group_id FROM ' . GROUPS_TABLE . " WHERE group_name = 'BOTS'";
$result = $db->sql_query($sql);
- $group_id = (int) $db->sql_fetchfield('group_id', false, $result);
+ $group_id = (int) $db->sql_fetchfield('group_id', $result);
$db->sql_freeresult($result);
$db->sql_query('TRUNCATE TABLE ' . BOTS_TABLE);
@@ -108,7 +108,7 @@ function add_bots($bots)
$sql = 'SELECT group_id FROM ' . GROUPS_TABLE . " WHERE group_name = 'BOTS'";
$result = $db->sql_query($sql);
- $group_id = (int) $db->sql_fetchfield('group_id', false, $result);
+ $group_id = (int) $db->sql_fetchfield('group_id', $result);
$db->sql_freeresult($result);
}
diff --git a/phpBB/includes/acm/acm_apc.php b/phpBB/includes/acm/acm_apc.php
index f168284d00..15f3705d9e 100644
--- a/phpBB/includes/acm/acm_apc.php
+++ b/phpBB/includes/acm/acm_apc.php
@@ -26,7 +26,6 @@ class acm
private $is_modified = false;
public $sql_rowset = array();
- private $sql_row_pointer = array();
public $cache_dir = '';
/**
@@ -62,11 +61,9 @@ class acm
$this->save();
unset($this->vars);
unset($this->sql_rowset);
- unset($this->sql_row_pointer);
$this->vars = array();
$this->sql_rowset = array();
- $this->sql_row_pointer = array();
}
/**
@@ -161,12 +158,10 @@ class acm
unset($this->vars);
unset($this->sql_rowset);
- unset($this->sql_row_pointer);
$this->vars = array();
$this->var_expires = array();
$this->sql_rowset = array();
- $this->sql_row_pointer = array();
$this->is_modified = false;
}
@@ -241,8 +236,6 @@ class acm
$this->sql_rowset[$query_id] = $temp;
- $this->sql_row_pointer[$query_id] = 0;
-
return $query_id;
}
@@ -287,7 +280,6 @@ class acm
// store them in the right place
$query_id = sizeof($this->sql_rowset);
$this->sql_rowset[$query_id] = array();
- $this->sql_row_pointer[$query_id] = 0;
while ($row = $db->sql_fetchrow($query_result))
{
@@ -305,12 +297,9 @@ class acm
*/
public function sql_fetchrow($query_id)
{
- if ($this->sql_row_pointer[$query_id] < sizeof($this->sql_rowset[$query_id]))
- {
- return $this->sql_rowset[$query_id][$this->sql_row_pointer[$query_id]++];
- }
+ list(, $row) = each($this->sql_rowset[$query_id]);
- return false;
+ return ($row !== NULL) ? $row : false;
}
/**
@@ -318,26 +307,9 @@ class acm
*/
public function sql_fetchfield($query_id, $field)
{
- if ($this->sql_row_pointer[$query_id] < sizeof($this->sql_rowset[$query_id]))
- {
- return (isset($this->sql_rowset[$query_id][$this->sql_row_pointer[$query_id]][$field])) ? $this->sql_rowset[$query_id][$this->sql_row_pointer[$query_id]][$field] : false;
- }
-
- return false;
- }
+ $row = current($this->sql_rowset[$query_id]);
- /**
- * Seek a specific row in an a cached database result (database)
- */
- public function sql_rowseek($rownum, $query_id)
- {
- if ($rownum >= sizeof($this->sql_rowset[$query_id]))
- {
- return false;
- }
-
- $this->sql_row_pointer[$query_id] = $rownum;
- return true;
+ return ($row !== false && isset($row[$field])) ? $row[$field] : false;
}
/**
@@ -351,7 +323,6 @@ class acm
}
unset($this->sql_rowset[$query_id]);
- unset($this->sql_row_pointer[$query_id]);
return true;
}
diff --git a/phpBB/includes/acm/acm_eaccelerator.php b/phpBB/includes/acm/acm_eaccelerator.php
index 74cfa51c6d..8592658e51 100644
--- a/phpBB/includes/acm/acm_eaccelerator.php
+++ b/phpBB/includes/acm/acm_eaccelerator.php
@@ -26,7 +26,6 @@ class acm
private $is_modified = false;
public $sql_rowset = array();
- private $sql_row_pointer = array();
public $cache_dir = '';
/**
@@ -62,11 +61,9 @@ class acm
$this->save();
unset($this->vars);
unset($this->sql_rowset);
- unset($this->sql_row_pointer);
$this->vars = array();
$this->sql_rowset = array();
- $this->sql_row_pointer = array();
}
/**
@@ -173,12 +170,10 @@ class acm
unset($this->vars);
unset($this->sql_rowset);
- unset($this->sql_row_pointer);
$this->vars = array();
$this->var_expires = array();
$this->sql_rowset = array();
- $this->sql_row_pointer = array();
$this->is_modified = false;
}
@@ -257,8 +252,6 @@ class acm
$this->sql_rowset[$query_id] = $temp;
- $this->sql_row_pointer[$query_id] = 0;
-
return $query_id;
}
@@ -303,7 +296,6 @@ class acm
// store them in the right place
$query_id = sizeof($this->sql_rowset);
$this->sql_rowset[$query_id] = array();
- $this->sql_row_pointer[$query_id] = 0;
while ($row = $db->sql_fetchrow($query_result))
{
@@ -321,12 +313,9 @@ class acm
*/
public function sql_fetchrow($query_id)
{
- if ($this->sql_row_pointer[$query_id] < sizeof($this->sql_rowset[$query_id]))
- {
- return $this->sql_rowset[$query_id][$this->sql_row_pointer[$query_id]++];
- }
+ list(, $row) = each($this->sql_rowset[$query_id]);
- return false;
+ return ($row !== NULL) ? $row : false;
}
/**
@@ -334,26 +323,9 @@ class acm
*/
public function sql_fetchfield($query_id, $field)
{
- if ($this->sql_row_pointer[$query_id] < sizeof($this->sql_rowset[$query_id]))
- {
- return (isset($this->sql_rowset[$query_id][$this->sql_row_pointer[$query_id]][$field])) ? $this->sql_rowset[$query_id][$this->sql_row_pointer[$query_id]][$field] : false;
- }
-
- return false;
- }
+ $row = current($this->sql_rowset[$query_id]);
- /**
- * Seek a specific row in an a cached database result (database)
- */
- public function sql_rowseek($rownum, $query_id)
- {
- if ($rownum >= sizeof($this->sql_rowset[$query_id]))
- {
- return false;
- }
-
- $this->sql_row_pointer[$query_id] = $rownum;
- return true;
+ return ($row !== false && isset($row[$field])) ? $row[$field] : false;
}
/**
@@ -367,7 +339,6 @@ class acm
}
unset($this->sql_rowset[$query_id]);
- unset($this->sql_row_pointer[$query_id]);
return true;
}
diff --git a/phpBB/includes/acm/acm_file.php b/phpBB/includes/acm/acm_file.php
index 3be4483774..f123f1383d 100644
--- a/phpBB/includes/acm/acm_file.php
+++ b/phpBB/includes/acm/acm_file.php
@@ -27,7 +27,6 @@ class acm
private $is_modified = false;
public $sql_rowset = array();
- private $sql_row_pointer = array();
public $cache_dir = '';
/**
@@ -65,12 +64,10 @@ class acm
unset($this->vars);
unset($this->var_expires);
unset($this->sql_rowset);
- unset($this->sql_row_pointer);
$this->vars = array();
$this->var_expires = array();
$this->sql_rowset = array();
- $this->sql_row_pointer = array();
}
/**
@@ -234,12 +231,10 @@ class acm
unset($this->vars);
unset($this->var_expires);
unset($this->sql_rowset);
- unset($this->sql_row_pointer);
$this->vars = array();
$this->var_expires = array();
$this->sql_rowset = array();
- $this->sql_row_pointer = array();
$this->is_modified = false;
}
@@ -378,7 +373,6 @@ class acm
return false;
}
- $this->sql_row_pointer[$query_id] = 0;
return $query_id;
}
@@ -400,7 +394,6 @@ class acm
$query_id = sizeof($this->sql_rowset);
$this->sql_rowset[$query_id] = array();
- $this->sql_row_pointer[$query_id] = 0;
while ($row = $db->sql_fetchrow($query_result))
{
@@ -426,12 +419,9 @@ class acm
*/
public function sql_fetchrow($query_id)
{
- if ($this->sql_row_pointer[$query_id] < sizeof($this->sql_rowset[$query_id]))
- {
- return $this->sql_rowset[$query_id][$this->sql_row_pointer[$query_id]++];
- }
+ list(, $row) = each($this->sql_rowset[$query_id]);
- return false;
+ return ($row !== NULL) ? $row : false;
}
/**
@@ -439,26 +429,9 @@ class acm
*/
public function sql_fetchfield($query_id, $field)
{
- if ($this->sql_row_pointer[$query_id] < sizeof($this->sql_rowset[$query_id]))
- {
- return (isset($this->sql_rowset[$query_id][$this->sql_row_pointer[$query_id]][$field])) ? $this->sql_rowset[$query_id][$this->sql_row_pointer[$query_id]][$field] : false;
- }
-
- return false;
- }
-
- /**
- * Seek a specific row in an a cached database result (database)
- */
- public function sql_rowseek($rownum, $query_id)
- {
- if ($rownum >= sizeof($this->sql_rowset[$query_id]))
- {
- return false;
- }
+ $row = current($this->sql_rowset[$query_id]);
- $this->sql_row_pointer[$query_id] = $rownum;
- return true;
+ return ($row !== false && isset($row[$field])) ? $row[$field] : false;
}
/**
@@ -472,7 +445,6 @@ class acm
}
unset($this->sql_rowset[$query_id]);
- unset($this->sql_row_pointer[$query_id]);
return true;
}
diff --git a/phpBB/includes/acm/acm_memcache.php b/phpBB/includes/acm/acm_memcache.php
index 4a1334a619..fc17b04942 100644
--- a/phpBB/includes/acm/acm_memcache.php
+++ b/phpBB/includes/acm/acm_memcache.php
@@ -26,7 +26,6 @@ class acm
private $is_modified = false;
public $sql_rowset = array();
- private $sql_row_pointer = array();
public $cache_dir = '';
private $memcache;
@@ -63,11 +62,9 @@ class acm
$this->save();
unset($this->vars);
unset($this->sql_rowset);
- unset($this->sql_row_pointer);
$this->vars = array();
$this->sql_rowset = array();
- $this->sql_row_pointer = array();
}
/**
@@ -162,12 +159,10 @@ class acm
unset($this->vars);
unset($this->sql_rowset);
- unset($this->sql_row_pointer);
$this->vars = array();
$this->var_expires = array();
$this->sql_rowset = array();
- $this->sql_row_pointer = array();
$this->is_modified = false;
}
@@ -242,7 +237,6 @@ class acm
$this->sql_rowset[$query_id] = $temp;
- $this->sql_row_pointer[$query_id] = 0;
return $query_id;
}
@@ -288,7 +282,6 @@ class acm
// store them in the right place
$query_id = sizeof($this->sql_rowset);
$this->sql_rowset[$query_id] = array();
- $this->sql_row_pointer[$query_id] = 0;
while ($row = $db->sql_fetchrow($query_result))
{
@@ -306,12 +299,9 @@ class acm
*/
public function sql_fetchrow($query_id)
{
- if ($this->sql_row_pointer[$query_id] < sizeof($this->sql_rowset[$query_id]))
- {
- return $this->sql_rowset[$query_id][$this->sql_row_pointer[$query_id]++];
- }
+ list(, $row) = each($this->sql_rowset[$query_id]);
- return false;
+ return ($row !== NULL) ? $row : false;
}
/**
@@ -319,26 +309,9 @@ class acm
*/
public function sql_fetchfield($query_id, $field)
{
- if ($this->sql_row_pointer[$query_id] < sizeof($this->sql_rowset[$query_id]))
- {
- return (isset($this->sql_rowset[$query_id][$this->sql_row_pointer[$query_id]][$field])) ? $this->sql_rowset[$query_id][$this->sql_row_pointer[$query_id]][$field] : false;
- }
-
- return false;
- }
-
- /**
- * Seek a specific row in an a cached database result (database)
- */
- public function sql_rowseek($rownum, $query_id)
- {
- if ($rownum >= sizeof($this->sql_rowset[$query_id]))
- {
- return false;
- }
+ $row = current($this->sql_rowset[$query_id]);
- $this->sql_row_pointer[$query_id] = $rownum;
- return true;
+ return ($row !== false && isset($row[$field])) ? $row[$field] : false;
}
/**
@@ -352,7 +325,6 @@ class acm
}
unset($this->sql_rowset[$query_id]);
- unset($this->sql_row_pointer[$query_id]);
return true;
}
diff --git a/phpBB/includes/acm/acm_xcache.php b/phpBB/includes/acm/acm_xcache.php
index cf1494a4c7..542dc60abb 100644
--- a/phpBB/includes/acm/acm_xcache.php
+++ b/phpBB/includes/acm/acm_xcache.php
@@ -26,7 +26,6 @@ class acm
private $is_modified = false;
public $sql_rowset = array();
- private $sql_row_pointer = array();
public $cache_dir = '';
/**
@@ -63,11 +62,9 @@ class acm
$this->save();
unset($this->vars);
unset($this->sql_rowset);
- unset($this->sql_row_pointer);
$this->vars = array();
$this->sql_rowset = array();
- $this->sql_row_pointer = array();
}
/**
@@ -166,12 +163,10 @@ class acm
unset($this->vars);
unset($this->sql_rowset);
- unset($this->sql_row_pointer);
$this->vars = array();
$this->var_expires = array();
$this->sql_rowset = array();
- $this->sql_row_pointer = array();
$this->is_modified = false;
}
@@ -246,7 +241,6 @@ class acm
$this->sql_rowset[$query_id] = xcache_get('sql_' . $query_hash);
- $this->sql_row_pointer[$query_id] = 0;
return $query_id;
}
@@ -295,7 +289,6 @@ class acm
// store them in the right place
$query_id = sizeof($this->sql_rowset);
$this->sql_rowset[$query_id] = array();
- $this->sql_row_pointer[$query_id] = 0;
while ($row = $db->sql_fetchrow($query_result))
{
@@ -313,12 +306,9 @@ class acm
*/
public function sql_fetchrow($query_id)
{
- if ($this->sql_row_pointer[$query_id] < sizeof($this->sql_rowset[$query_id]))
- {
- return $this->sql_rowset[$query_id][$this->sql_row_pointer[$query_id]++];
- }
+ list(, $row) = each($this->sql_rowset[$query_id]);
- return false;
+ return ($row !== NULL) ? $row : false;
}
/**
@@ -326,26 +316,9 @@ class acm
*/
public function sql_fetchfield($query_id, $field)
{
- if ($this->sql_row_pointer[$query_id] < sizeof($this->sql_rowset[$query_id]))
- {
- return (isset($this->sql_rowset[$query_id][$this->sql_row_pointer[$query_id]][$field])) ? $this->sql_rowset[$query_id][$this->sql_row_pointer[$query_id]][$field] : false;
- }
-
- return false;
- }
-
- /**
- * Seek a specific row in an a cached database result (database)
- */
- public function sql_rowseek($rownum, $query_id)
- {
- if ($rownum >= sizeof($this->sql_rowset[$query_id]))
- {
- return false;
- }
+ $row = current($this->sql_rowset[$query_id]);
- $this->sql_row_pointer[$query_id] = $rownum;
- return true;
+ return ($row !== false && isset($row[$field])) ? $row[$field] : false;
}
/**
@@ -359,7 +332,6 @@ class acm
}
unset($this->sql_rowset[$query_id]);
- unset($this->sql_row_pointer[$query_id]);
return true;
}
diff --git a/phpBB/includes/acp/acp_database.php b/phpBB/includes/acp/acp_database.php
index fa3c3a5dca..ee3ab39b47 100644
--- a/phpBB/includes/acp/acp_database.php
+++ b/phpBB/includes/acp/acp_database.php
@@ -1008,7 +1008,7 @@ class postgres_extractor extends base_extractor
}
else
{
- $row['rowdefault'] = $db->sql_fetchfield('rowdefault', false, $def_res);
+ $row['rowdefault'] = $db->sql_fetchfield('rowdefault', $def_res);
}
$db->sql_freeresult($def_res);
diff --git a/phpBB/includes/db/db2.php b/phpBB/includes/db/db2.php
index 09d56c709a..40909050c9 100644
--- a/phpBB/includes/db/db2.php
+++ b/phpBB/includes/db/db2.php
@@ -26,7 +26,6 @@ include_once($phpbb_root_path . 'includes/db/dbal.' . $phpEx);
class dbal_db2 extends dbal
{
var $multi_insert = true;
- var $last_query_text = '';
// can't truncate a table
var $truncate = false;
@@ -106,7 +105,6 @@ class dbal_db2 extends dbal
$this->sql_report('start', $query);
}
- $this->last_query_text = $query;
$this->query_result = ($cache_ttl && method_exists($cache, 'sql_load')) ? $cache->sql_load($query) : false;
$this->sql_add_num_queries($this->query_result);
@@ -284,49 +282,6 @@ class dbal_db2 extends dbal
}
/**
- * Seek to given row number
- * rownum is zero-based
- */
- function sql_rowseek($rownum, $query_id = false)
- {
- global $cache;
-
- if ($query_id === false)
- {
- $query_id = $this->query_result;
- }
-
- if (isset($cache->sql_rowset[$query_id]))
- {
- return $cache->sql_rowseek($rownum, $query_id);
- }
-
- if ($query_id === false)
- {
- return;
- }
-
- $this->sql_freeresult($query_id);
- $query_id = $this->sql_query($this->last_query_text);
-
- if ($query_id === false)
- {
- return false;
- }
-
- // We do not fetch the row for rownum == 0 because then the next resultset would be the second row
- for ($i = 0; $i < $rownum; $i++)
- {
- if (!$this->sql_fetchrow($query_id))
- {
- return false;
- }
- }
-
- return true;
- }
-
- /**
* Get last inserted id after insert statement
*/
function sql_nextid()
diff --git a/phpBB/includes/db/dbal.php b/phpBB/includes/db/dbal.php
index 5fd6de7f50..0444dcd816 100644
--- a/phpBB/includes/db/dbal.php
+++ b/phpBB/includes/db/dbal.php
@@ -192,9 +192,8 @@ class dbal
/**
* Fetch field
- * if rownum is false, the current row is used, else it is pointing to the row (zero-based)
*/
- function sql_fetchfield($field, $rownum = false, $query_id = false)
+ function sql_fetchfield($field, $query_id = false)
{
global $cache;
@@ -205,11 +204,6 @@ class dbal
if ($query_id !== false)
{
- if ($rownum !== false)
- {
- $this->sql_rowseek($rownum, $query_id);
- }
-
if (!is_object($query_id) && isset($cache->sql_rowset[$query_id]))
{
return $cache->sql_fetchfield($query_id, $field);
diff --git a/phpBB/includes/db/firebird.php b/phpBB/includes/db/firebird.php
index a58371cf22..afb649a4f4 100644
--- a/phpBB/includes/db/firebird.php
+++ b/phpBB/includes/db/firebird.php
@@ -277,49 +277,6 @@ class dbal_firebird extends dbal
}
/**
- * Seek to given row number
- * rownum is zero-based
- */
- function sql_rowseek($rownum, &$query_id)
- {
- global $cache;
-
- if ($query_id === false)
- {
- $query_id = $this->query_result;
- }
-
- if (isset($cache->sql_rowset[$query_id]))
- {
- return $cache->sql_rowseek($rownum, $query_id);
- }
-
- if ($query_id === false)
- {
- return;
- }
-
- $this->sql_freeresult($query_id);
- $query_id = $this->sql_query($this->last_query_text);
-
- if ($query_id === false)
- {
- return false;
- }
-
- // We do not fetch the row for rownum == 0 because then the next resultset would be the second row
- for ($i = 0; $i < $rownum; $i++)
- {
- if (!$this->sql_fetchrow($query_id))
- {
- return false;
- }
- }
-
- return true;
- }
-
- /**
* Get last inserted id after insert statement
*/
function sql_nextid()
diff --git a/phpBB/includes/db/mssql.php b/phpBB/includes/db/mssql.php
index 7a1467bd9c..bf6190c79c 100644
--- a/phpBB/includes/db/mssql.php
+++ b/phpBB/includes/db/mssql.php
@@ -186,7 +186,7 @@ class dbal_mssql extends dbal
// Seek by $offset rows
if ($offset)
{
- $this->sql_rowseek($offset, $result);
+ @mssql_data_seek($result, $offset);
}
return $result;
@@ -237,27 +237,6 @@ class dbal_mssql extends dbal
}
/**
- * Seek to given row number
- * rownum is zero-based
- */
- function sql_rowseek($rownum, &$query_id)
- {
- global $cache;
-
- if ($query_id === false)
- {
- $query_id = $this->query_result;
- }
-
- if (isset($cache->sql_rowset[$query_id]))
- {
- return $cache->sql_rowseek($rownum, $query_id);
- }
-
- return ($query_id !== false) ? @mssql_data_seek($query_id, $rownum) : false;
- }
-
- /**
* Get last inserted id after insert statement
*/
function sql_nextid()
diff --git a/phpBB/includes/db/mssql_2005.php b/phpBB/includes/db/mssql_2005.php
index ed9cd8edc6..9fc2e7027f 100644
--- a/phpBB/includes/db/mssql_2005.php
+++ b/phpBB/includes/db/mssql_2005.php
@@ -25,7 +25,6 @@ include_once($phpbb_root_path . 'includes/db/dbal.' . $phpEx);
*/
class dbal_mssql_2005 extends dbal
{
- var $last_query_text = '';
var $dbms_type = 'mssql';
/**
@@ -112,7 +111,6 @@ class dbal_mssql_2005 extends dbal
$this->sql_report('start', $query);
}
- $this->last_query_text = $query;
$this->query_result = ($cache_ttl && method_exists($cache, 'sql_load')) ? $cache->sql_load($query) : false;
$this->sql_add_num_queries($this->query_result);
@@ -177,7 +175,14 @@ class dbal_mssql_2005 extends dbal
// Seek by $offset rows
if ($offset)
{
- $this->sql_rowseek($offset, $result);
+ // We do not fetch the row for rownum == 0 because then the next resultset would be the second row
+ for ($i = 0; $i < $offset; $i++)
+ {
+ if (!$this->sql_fetchrow($result))
+ {
+ return false;
+ }
+ }
}
return $result;
@@ -228,49 +233,6 @@ class dbal_mssql_2005 extends dbal
}
/**
- * Seek to given row number
- * rownum is zero-based
- */
- function sql_rowseek($rownum, &$query_id)
- {
- global $cache;
-
- if ($query_id === false)
- {
- $query_id = $this->query_result;
- }
-
- if (isset($cache->sql_rowset[$query_id]))
- {
- return $cache->sql_rowseek($rownum, $query_id);
- }
-
- if ($query_id === false)
- {
- return false;
- }
-
- $this->sql_freeresult($query_id);
- $query_id = $this->sql_query($this->last_query_text);
-
- if ($query_id === false)
- {
- return false;
- }
-
- // We do not fetch the row for rownum == 0 because then the next resultset would be the second row
- for ($i = 0; $i < $rownum; $i++)
- {
- if (!$this->sql_fetchrow($query_id))
- {
- return false;
- }
- }
-
- return true;
- }
-
- /**
* Get last inserted id after insert statement
*/
function sql_nextid()
diff --git a/phpBB/includes/db/mssql_odbc.php b/phpBB/includes/db/mssql_odbc.php
index a9a0b1bc1d..de96939035 100644
--- a/phpBB/includes/db/mssql_odbc.php
+++ b/phpBB/includes/db/mssql_odbc.php
@@ -31,7 +31,6 @@ include_once($phpbb_root_path . 'includes/db/dbal.' . $phpEx);
*/
class dbal_mssql_odbc extends dbal
{
- var $last_query_text = '';
var $dbms_type = 'mssql';
/**
@@ -139,7 +138,6 @@ class dbal_mssql_odbc extends dbal
$this->sql_report('start', $query);
}
- $this->last_query_text = $query;
$this->query_result = ($cache_ttl && method_exists($cache, 'sql_load')) ? $cache->sql_load($query) : false;
$this->sql_add_num_queries($this->query_result);
@@ -204,7 +202,14 @@ class dbal_mssql_odbc extends dbal
// Seek by $offset rows
if ($offset)
{
- $this->sql_rowseek($offset, $result);
+ // We do not fetch the row for rownum == 0 because then the next resultset would be the second row
+ for ($i = 0; $i < $offset; $i++)
+ {
+ if (!$this->sql_fetchrow($result))
+ {
+ return false;
+ }
+ }
}
return $result;
@@ -240,49 +245,6 @@ class dbal_mssql_odbc extends dbal
}
/**
- * Seek to given row number
- * rownum is zero-based
- */
- function sql_rowseek($rownum, &$query_id)
- {
- global $cache;
-
- if ($query_id === false)
- {
- $query_id = $this->query_result;
- }
-
- if (isset($cache->sql_rowset[$query_id]))
- {
- return $cache->sql_rowseek($rownum, $query_id);
- }
-
- if ($query_id === false)
- {
- return false;
- }
-
- $this->sql_freeresult($query_id);
- $query_id = $this->sql_query($this->last_query_text);
-
- if ($query_id === false)
- {
- return false;
- }
-
- // We do not fetch the row for rownum == 0 because then the next resultset would be the second row
- for ($i = 0; $i < $rownum; $i++)
- {
- if (!$this->sql_fetchrow($query_id))
- {
- return false;
- }
- }
-
- return true;
- }
-
- /**
* Get last inserted id after insert statement
*/
function sql_nextid()
diff --git a/phpBB/includes/db/mysql.php b/phpBB/includes/db/mysql.php
index 17daf7093c..1014fe6780 100644
--- a/phpBB/includes/db/mysql.php
+++ b/phpBB/includes/db/mysql.php
@@ -224,27 +224,6 @@ class dbal_mysql extends dbal
}
/**
- * Seek to given row number
- * rownum is zero-based
- */
- function sql_rowseek($rownum, &$query_id)
- {
- global $cache;
-
- if ($query_id === false)
- {
- $query_id = $this->query_result;
- }
-
- if (isset($cache->sql_rowset[$query_id]))
- {
- return $cache->sql_rowseek($rownum, $query_id);
- }
-
- return ($query_id !== false) ? @mysql_data_seek($query_id, $rownum) : false;
- }
-
- /**
* Get last inserted id after insert statement
*/
function sql_nextid()
diff --git a/phpBB/includes/db/mysqli.php b/phpBB/includes/db/mysqli.php
index ed43ec0a82..ffe39d63bf 100644
--- a/phpBB/includes/db/mysqli.php
+++ b/phpBB/includes/db/mysqli.php
@@ -220,27 +220,6 @@ class dbal_mysqli extends dbal
}
/**
- * Seek to given row number
- * rownum is zero-based
- */
- function sql_rowseek($rownum, &$query_id)
- {
- global $cache;
-
- if ($query_id === false)
- {
- $query_id = $this->query_result;
- }
-
- if (!is_object($query_id) && isset($cache->sql_rowset[$query_id]))
- {
- return $cache->sql_rowseek($rownum, $query_id);
- }
-
- return ($query_id !== false) ? @mysqli_data_seek($query_id, $rownum) : false;
- }
-
- /**
* Get last inserted id after insert statement
*/
function sql_nextid()
diff --git a/phpBB/includes/db/oracle.php b/phpBB/includes/db/oracle.php
index 36c80cf01c..fc7d177377 100644
--- a/phpBB/includes/db/oracle.php
+++ b/phpBB/includes/db/oracle.php
@@ -432,44 +432,6 @@ class dbal_oracle extends dbal
}
/**
- * Seek to given row number
- * rownum is zero-based
- */
- function sql_rowseek($rownum, &$query_id)
- {
- global $cache;
-
- if ($query_id === false)
- {
- $query_id = $this->query_result;
- }
-
- if (isset($cache->sql_rowset[$query_id]))
- {
- return $cache->sql_rowseek($rownum, $query_id);
- }
-
- if ($query_id === false)
- {
- return false;
- }
-
- // Reset internal pointer
- @oci_execute($query_id, OCI_DEFAULT);
-
- // We do not fetch the row for rownum == 0 because then the next resultset would be the second row
- for ($i = 0; $i < $rownum; $i++)
- {
- if (!$this->sql_fetchrow($query_id))
- {
- return false;
- }
- }
-
- return true;
- }
-
- /**
* Get last inserted id after insert statement
*/
function sql_nextid()
diff --git a/phpBB/includes/db/postgres.php b/phpBB/includes/db/postgres.php
index 023a8fda1b..0cce581558 100644
--- a/phpBB/includes/db/postgres.php
+++ b/phpBB/includes/db/postgres.php
@@ -257,27 +257,6 @@ class dbal_postgres extends dbal
}
/**
- * Seek to given row number
- * rownum is zero-based
- */
- function sql_rowseek($rownum, &$query_id)
- {
- global $cache;
-
- if ($query_id === false)
- {
- $query_id = $this->query_result;
- }
-
- if (isset($cache->sql_rowset[$query_id]))
- {
- return $cache->sql_rowseek($rownum, $query_id);
- }
-
- return ($query_id !== false) ? @pg_result_seek($query_id, $rownum) : false;
- }
-
- /**
* Get last inserted id after insert statement
*/
function sql_nextid()
diff --git a/phpBB/includes/db/sqlite.php b/phpBB/includes/db/sqlite.php
index 9dedf09079..580a9fb1fb 100644
--- a/phpBB/includes/db/sqlite.php
+++ b/phpBB/includes/db/sqlite.php
@@ -193,27 +193,6 @@ class dbal_sqlite extends dbal
}
/**
- * Seek to given row number
- * rownum is zero-based
- */
- function sql_rowseek($rownum, &$query_id)
- {
- global $cache;
-
- if ($query_id === false)
- {
- $query_id = $this->query_result;
- }
-
- if (isset($cache->sql_rowset[$query_id]))
- {
- return $cache->sql_rowseek($rownum, $query_id);
- }
-
- return ($query_id !== false) ? @sqlite_seek($query_id, $rownum) : false;
- }
-
- /**
* Get last inserted id after insert statement
*/
function sql_nextid()
diff --git a/phpBB/includes/functions_admin.php b/phpBB/includes/functions_admin.php
index 6ad30c3568..7562d062e0 100644
--- a/phpBB/includes/functions_admin.php
+++ b/phpBB/includes/functions_admin.php
@@ -2472,7 +2472,7 @@ function view_log($mode, &$log, &$log_count, $limit = 0, $offset = 0, $forum_id
FROM ' . FORUMS_TABLE . '
WHERE forum_type = ' . FORUM_POST;
$f_result = $db->sql_query_limit($sql, 1);
- $default_forum_id = (int) $db->sql_fetchfield('forum_id', false, $f_result);
+ $default_forum_id = (int) $db->sql_fetchfield('forum_id', $f_result);
$db->sql_freeresult($f_result);
}
diff --git a/phpBB/includes/functions_convert.php b/phpBB/includes/functions_convert.php
index 2084a81236..159d6e935e 100644
--- a/phpBB/includes/functions_convert.php
+++ b/phpBB/includes/functions_convert.php
@@ -1769,7 +1769,7 @@ function add_bots()
$sql = 'SELECT group_id FROM ' . GROUPS_TABLE . " WHERE group_name_clean = 'bots'";
$result = $db->sql_query($sql);
- $group_id = (int) $db->sql_fetchfield('group_id', false, $result);
+ $group_id = (int) $db->sql_fetchfield('group_id', $result);
$db->sql_freeresult($result);
if (!$group_id)
@@ -1778,7 +1778,7 @@ function add_bots()
$sql = 'SELECT group_id FROM ' . GROUPS_TABLE . " WHERE group_name_clean = 'bots'";
$result = $db->sql_query($sql);
- $group_id = (int) $db->sql_fetchfield('group_id', false, $result);
+ $group_id = (int) $db->sql_fetchfield('group_id', $result);
$db->sql_freeresult($result);
if (!$group_id)