mirror of
https://github.com/phpbb/phpbb.git
synced 2025-07-30 21:40:43 +02:00
Merge branch 'task/naderman/mssql-db-tests' into develop-olympus
* task/naderman/mssql-db-tests: [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.
This commit is contained in:
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
?>
|
||||
|
Reference in New Issue
Block a user