Skip to content

Commit

Permalink
Merge f607649 into 9ba238b
Browse files Browse the repository at this point in the history
  • Loading branch information
hrach committed Sep 22, 2018
2 parents 9ba238b + f607649 commit b680ce8
Show file tree
Hide file tree
Showing 12 changed files with 69 additions and 22 deletions.
1 change: 0 additions & 1 deletion .travis.yml
@@ -1,7 +1,6 @@
dist: trusty
language: php
php:
- 7.0
- 7.1
- 7.2

Expand Down
4 changes: 2 additions & 2 deletions composer.json
Expand Up @@ -12,7 +12,7 @@
"issues": "https://github.com/nextras/dbal/issues"
},
"require": {
"php": ">=7.0"
"php": ">=7.1"
},
"require-dev": {
"mockery/mockery": "~1.0@dev",
Expand All @@ -28,7 +28,7 @@
},
"extra": {
"branch-alias": {
"dev-master": "3.0-dev"
"dev-master": "3.1-dev"
}
}
}
5 changes: 1 addition & 4 deletions src/Bridges/NetteTracy/ConnectionPanel.php
Expand Up @@ -88,10 +88,7 @@ public function getPanel()
try {
$row[4] = null;
if ($this->doExplain) {
$explain = $this->connection->getDriver()->query('EXPLAIN ' . $row['1']);
if ($explain !== null) {
$row[4] = $explain->fetchAll();
}
$row[4] = $this->connection->getDriver()->query('EXPLAIN ' . $row['1'])->fetchAll();
}
} catch (\Throwable $e) {
$row[4] = null;
Expand Down
6 changes: 3 additions & 3 deletions src/Connection.php
Expand Up @@ -119,7 +119,7 @@ public function getConfig(): array


/** @inheritdoc */
public function query(...$args)
public function query(...$args): Result
{
$this->connected || $this->connect();
$sql = $this->sqlPreprocessor->process($args);
Expand All @@ -128,7 +128,7 @@ public function query(...$args)


/** @inheritdoc */
public function queryArgs($query, array $args = [])
public function queryArgs($query, array $args = []): Result
{
if (!is_array($query)) {
array_unshift($args, $query);
Expand Down Expand Up @@ -275,7 +275,7 @@ protected function getSavepointName(): string
}


private function nativeQuery(string $sql)
private function nativeQuery(string $sql): Result
{
try {
$result = $this->driver->query($sql);
Expand Down
3 changes: 1 addition & 2 deletions src/Drivers/IDriver.php
Expand Up @@ -58,9 +58,8 @@ public function getResourceHandle();
/**
* Runs query and returns a result. Returns a null if the query does not select any data.
* @internal
* @return Result|null
*/
public function query(string $query);
public function query(string $query): Result;


/**
Expand Down
4 changes: 2 additions & 2 deletions src/Drivers/Mysqli/MysqliDriver.php
Expand Up @@ -95,7 +95,7 @@ public function getResourceHandle()
}


public function query(string $query)
public function query(string $query): Result
{
assert($this->connection !== null);

Expand All @@ -113,7 +113,7 @@ public function query(string $query)
}

if ($result === true) {
return null;
return new Result(new MysqliEmptyResultAdapter(), $this);
}

return new Result(new MysqliResultAdapter($result), $this);
Expand Down
39 changes: 39 additions & 0 deletions src/Drivers/Mysqli/MysqliEmptyResultAdapter.php
@@ -0,0 +1,39 @@
<?php declare(strict_types = 1);

/**
* This file is part of the Nextras\Dbal library.
* @license MIT
* @link https://github.com/nextras/dbal
*/

namespace Nextras\Dbal\Drivers\Mysqli;

use Nextras\Dbal\Drivers\IResultAdapter;
use Nextras\Dbal\InvalidStateException;


class MysqliEmptyResultAdapter implements IResultAdapter
{
public function seek(int $index)
{
throw new InvalidStateException("Unable to seek in row set to {$index} index.");
}


public function fetch()
{
return null;
}


public function getTypes(): array
{
return [];
}


public function getRowsCount(): int
{
return 0;
}
}
2 changes: 1 addition & 1 deletion src/Drivers/Pgsql/PgsqlDriver.php
Expand Up @@ -105,7 +105,7 @@ public function getResourceHandle()
}


public function query(string $query)
public function query(string $query): Result
{
if (!pg_send_query($this->connection, $query)) {
throw $this->createException(pg_last_error($this->connection), 0, null);
Expand Down
2 changes: 1 addition & 1 deletion src/Drivers/Sqlsrv/SqlsrvDriver.php
Expand Up @@ -109,7 +109,7 @@ public function getResourceHandle()
}


public function query(string $query)
public function query(string $query): Result
{
/** @see https://msdn.microsoft.com/en-us/library/ee376927(SQL.90).aspx */

Expand Down
12 changes: 10 additions & 2 deletions src/Drivers/Sqlsrv/SqlsrvResultAdapter.php
Expand Up @@ -59,9 +59,17 @@ public function fetch()
if ($this->index !== null) {
$index = $this->index;
$this->index = null;
return sqlsrv_fetch_array($this->statement, SQLSRV_FETCH_ASSOC, SQLSRV_SCROLL_ABSOLUTE, $index);
$fetch = sqlsrv_fetch_array($this->statement, SQLSRV_FETCH_ASSOC, SQLSRV_SCROLL_ABSOLUTE, $index);
if ($fetch === false) {
return null;
}
return $fetch;
}
return sqlsrv_fetch_array($this->statement, SQLSRV_FETCH_ASSOC, SQLSRV_SCROLL_NEXT);
$fetch = sqlsrv_fetch_array($this->statement, SQLSRV_FETCH_ASSOC, SQLSRV_SCROLL_NEXT);
if ($fetch === false) {
return null;
}
return $fetch;
}


Expand Down
6 changes: 2 additions & 4 deletions src/IConnection.php
Expand Up @@ -63,19 +63,17 @@ public function getConfig(): array;
/**
* Executes a query.
* @param mixed ...$args
* @return Result|null
* @throws QueryException
*/
public function query(...$args);
public function query(...$args): Result;


/**
* @param string|array $query
* @param array $args
* @return Result|null
* @throws QueryException
*/
public function queryArgs($query, array $args = []);
public function queryArgs($query, array $args = []): Result;


public function queryByQueryBuilder(QueryBuilder $queryBuilder): Result;
Expand Down
7 changes: 7 additions & 0 deletions tests/cases/integration/result.phpt
Expand Up @@ -64,6 +64,13 @@ class ResultIntegrationTest extends IntegrationTestCase
$result->seek(10);
}, InvalidStateException::class);
}


public function testResultType()
{
$this->lockConnection($this->connection);
Assert::null($this->connection->query('INSERT INTO tags %values', ['name' => "Test"])->fetch());
}
}


Expand Down

0 comments on commit b680ce8

Please sign in to comment.