Skip to content

Commit

Permalink
[DBAL-3082] Updated convertParamType(), added a functional test
Browse files Browse the repository at this point in the history
  • Loading branch information
morozov authored and Majkl578 committed Apr 7, 2018
1 parent 78abf39 commit 51cc243
Show file tree
Hide file tree
Showing 2 changed files with 61 additions and 1 deletion.
8 changes: 7 additions & 1 deletion lib/Doctrine/DBAL/Driver/PDOStatement.php
Original file line number Diff line number Diff line change
Expand Up @@ -216,7 +216,13 @@ public function fetchColumn($columnIndex = 0)
private function convertParamType(int $type) : int
{
if (! isset(self::PARAM_TYPE_MAP[$type])) {
throw new \InvalidArgumentException('Invalid parameter type: ' . $type);
// TODO: next major: throw an exception
@trigger_error(sprintf(
'Using a PDO parameter type (%d given) is deprecated and will cause an error in Doctrine 3.0',
$type
), E_USER_DEPRECATED);

return $type;
}

return self::PARAM_TYPE_MAP[$type];
Expand Down
54 changes: 54 additions & 0 deletions tests/Doctrine/Tests/DBAL/Functional/PDOStatementTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
<?php

namespace Doctrine\Tests\DBAL\Functional;

use Doctrine\DBAL\Driver\PDOConnection;
use Doctrine\DBAL\Schema\Table;
use Doctrine\Tests\DbalFunctionalTestCase;
use PDO;
use function extension_loaded;

class PDOStatementTest extends DbalFunctionalTestCase
{
protected function setUp()
{
if (! extension_loaded('pdo')) {
$this->markTestSkipped('PDO is not installed');
}

parent::setUp();

if (! $this->_conn->getWrappedConnection() instanceof PDOConnection) {
$this->markTestSkipped('PDO-only test');
}

$table = new Table('stmt_test');
$table->addColumn('id', 'integer');
$table->addColumn('name', 'text');
$this->_conn->getSchemaManager()->dropAndCreateTable($table);
}

/**
* @group legacy
* @expectedDeprecation Using a PDO fetch mode or their combination (%d given) is deprecated and will cause an error in Doctrine 3.0
*/
public function testPDOSpecificModeIsAccepted()
{
$this->_conn->insert('stmt_test', [
'id' => 1,
'name' => 'Alice',
]);
$this->_conn->insert('stmt_test', [
'id' => 2,
'name' => 'Bob',
]);

$data = $this->_conn->query('SELECT id, name FROM stmt_test ORDER BY id')
->fetchAll(PDO::FETCH_KEY_PAIR);

self::assertSame([
1 => 'Alice',
2 => 'Bob',
], $data);
}
}

0 comments on commit 51cc243

Please sign in to comment.