diff options
author | Andreas Fischer <bantu@phpbb.com> | 2010-11-03 11:58:48 +0100 |
---|---|---|
committer | Andreas Fischer <bantu@phpbb.com> | 2010-11-03 11:58:48 +0100 |
commit | f164906d77d3c8cb5650bb1e70db8e233f726d4c (patch) | |
tree | cb403f103373dfeb833a737615dbd8ed09aa30c7 /phpBB/includes | |
parent | 36820a4f4f099b20d83044416ec208c7a4cbf63c (diff) | |
parent | e3b460a518e46ad910345199ee85e94d3134fd3e (diff) | |
download | forums-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.php | 26 |
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 +?> |