aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/includes
diff options
context:
space:
mode:
authorAndreas Fischer <bantu@phpbb.com>2010-11-03 11:58:48 +0100
committerAndreas Fischer <bantu@phpbb.com>2010-11-03 11:58:48 +0100
commitf164906d77d3c8cb5650bb1e70db8e233f726d4c (patch)
treecb403f103373dfeb833a737615dbd8ed09aa30c7 /phpBB/includes
parent36820a4f4f099b20d83044416ec208c7a4cbf63c (diff)
parente3b460a518e46ad910345199ee85e94d3134fd3e (diff)
downloadforums-f164906d77d3c8cb5650bb1e70db8e233f726d4c.tar
forums-f164906d77d3c8cb5650bb1e70db8e233f726d4c.tar.gz
forums-f164906d77d3c8cb5650bb1e70db8e233f726d4c.tar.bz2
forums-f164906d77d3c8cb5650bb1e70db8e233f726d4c.tar.xz
forums-f164906d77d3c8cb5650bb1e70db8e233f726d4c.zip
Merge branch 'develop-olympus' into develop
* develop-olympus: [task/mssql-db-tests] Remove MS SQL helper values from SELECT LIMIT results. [task/mssql-db-tests] Split up database tests into SELECT and write operations [task/mssql-db-tests] PHPUnit output got stuck after unterminated ob_start. [task/mssql-db-tests] sql_query_limit must return all results when total = 0 [task/mssql-db-tests] Add support for odbc & sqlsrv PDO test connections [task/mssql-db-tests] Refactored getConnection into multiple smaller parts. [task/mssql-db-tests] Allow test configuration with environment variables. [task/mssql-db-tests] No longer display an error when skipping db tests. [task/mssql-db-tests] Use a simple getter for test case helpers. Conflicts: tests/template/template.php
Diffstat (limited to 'phpBB/includes')
-rw-r--r--phpBB/includes/db/mssqlnative.php26
1 files changed, 20 insertions, 6 deletions
diff --git a/phpBB/includes/db/mssqlnative.php b/phpBB/includes/db/mssqlnative.php
index d6ac3b3acc..7ed4146f27 100644
--- a/phpBB/includes/db/mssqlnative.php
+++ b/phpBB/includes/db/mssqlnative.php
@@ -349,7 +349,8 @@ class dbal_mssqlnative extends dbal
{
$this->query_result = false;
- if ($offset === false || $offset == 0)
+ // total == 0 means all results - not zero results
+ if ($offset == 0 && $total !== 0)
{
if (strpos($query, "SELECT") === false)
{
@@ -360,13 +361,21 @@ class dbal_mssqlnative extends dbal
$query = preg_replace('/SELECT(\s*DISTINCT)?/Dsi', 'SELECT$1 TOP '.$total, $query);
}
}
- else
+ else if ($offset > 0)
{
$query = preg_replace('/SELECT(\s*DISTINCT)?/Dsi', 'SELECT$1 TOP(10000000) ', $query);
$query = 'SELECT *
FROM (SELECT sub2.*, ROW_NUMBER() OVER(ORDER BY sub2.line2) AS line3
- FROM (SELECT 1 AS line2, sub1.* FROM (' . $query . ') AS sub1) as sub2) AS sub3
- WHERE line3 BETWEEN ' . ($offset+1) . ' AND ' . ($offset + $total);
+ FROM (SELECT 1 AS line2, sub1.* FROM (' . $query . ') AS sub1) as sub2) AS sub3';
+
+ if ($total > 0)
+ {
+ $query .= ' WHERE line3 BETWEEN ' . ($offset+1) . ' AND ' . ($offset + $total);
+ }
+ else
+ {
+ $query .= ' WHERE line3 > ' . $offset;
+ }
}
$result = $this->sql_query($query, $cache_ttl);
@@ -406,13 +415,18 @@ class dbal_mssqlnative extends dbal
$row = @sqlsrv_fetch_array($query_id, SQLSRV_FETCH_ASSOC);
- // I hope i am able to remove this later... hopefully only a PHP or MSSQL bug
if ($row)
{
foreach ($row as $key => $value)
{
$row[$key] = ($value === ' ' || $value === NULL) ? '' : $value;
}
+
+ // remove helper values from LIMIT queries
+ if (isset($row['line2']))
+ {
+ unset($row['line2'], $row['line3']);
+ }
}
return $row;
}
@@ -624,4 +638,4 @@ class dbal_mssqlnative extends dbal
}
}
-?> \ No newline at end of file
+?>