aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPatrick Webster <noxwizard@phpbb.com>2012-05-08 18:44:43 -0500
committerPatrick Webster <noxwizard@phpbb.com>2012-05-08 18:44:43 -0500
commite52d23848a1b116d32fbad9dd384e0755553b829 (patch)
tree3d8b8d1774303e0c9e1eb38090c68022ba0e1827
parentc0718fae96a991182f3941dee02599077b5b447d (diff)
downloadforums-e52d23848a1b116d32fbad9dd384e0755553b829.tar
forums-e52d23848a1b116d32fbad9dd384e0755553b829.tar.gz
forums-e52d23848a1b116d32fbad9dd384e0755553b829.tar.bz2
forums-e52d23848a1b116d32fbad9dd384e0755553b829.tar.xz
forums-e52d23848a1b116d32fbad9dd384e0755553b829.zip
[ticket/10858] Fix MSSQL Native's row seeking behavior
The result_mssqlnative class remains in case someone wants to use it PHPBB3-10858
-rw-r--r--phpBB/includes/db/mssqlnative.php31
1 files changed, 28 insertions, 3 deletions
diff --git a/phpBB/includes/db/mssqlnative.php b/phpBB/includes/db/mssqlnative.php
index 7fbc374e77..6391664a3e 100644
--- a/phpBB/includes/db/mssqlnative.php
+++ b/phpBB/includes/db/mssqlnative.php
@@ -447,14 +447,39 @@ class dbal_mssqlnative extends dbal
{
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);
}
- $seek = new result_mssqlnative($query_id);
- $row = $seek->seek($rownum);
- return ($row = $seek->fetch()) ? $row : false;
+ 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;
}
/**