Unverified Commit 94b1ea2c authored by Sergei Morozov's avatar Sergei Morozov

Merge branch 'bpo/2.9/#3642' into 2.9

parents 8bd299f9 61b652d9
...@@ -7,12 +7,16 @@ use Doctrine\DBAL\Driver\AbstractDriverException; ...@@ -7,12 +7,16 @@ use Doctrine\DBAL\Driver\AbstractDriverException;
class OCI8Exception extends AbstractDriverException class OCI8Exception extends AbstractDriverException
{ {
/** /**
* @param mixed[] $error * @param mixed[]|false $error
* *
* @return \Doctrine\DBAL\Driver\OCI8\OCI8Exception * @return \Doctrine\DBAL\Driver\OCI8\OCI8Exception
*/ */
public static function fromErrorInfo($error) public static function fromErrorInfo($error)
{ {
if ($error === false) {
return new self('Database error occurred but no error information was retrieved from the driver.');
}
return new self($error['message'], null, $error['code']); return new self($error['message'], null, $error['code']);
} }
} }
...@@ -296,13 +296,20 @@ class MySqlSchemaManager extends AbstractSchemaManager ...@@ -296,13 +296,20 @@ class MySqlSchemaManager extends AbstractSchemaManager
$tableOptions = $this->_conn->fetchAssoc($sql); $tableOptions = $this->_conn->fetchAssoc($sql);
if ($tableOptions === false) {
return $table;
}
$table->addOption('engine', $tableOptions['ENGINE']); $table->addOption('engine', $tableOptions['ENGINE']);
if ($tableOptions['TABLE_COLLATION'] !== null) { if ($tableOptions['TABLE_COLLATION'] !== null) {
$table->addOption('collation', $tableOptions['TABLE_COLLATION']); $table->addOption('collation', $tableOptions['TABLE_COLLATION']);
} }
if ($tableOptions['AUTO_INCREMENT'] !== null) { if ($tableOptions['AUTO_INCREMENT'] !== null) {
$table->addOption('autoincrement', $tableOptions['AUTO_INCREMENT']); $table->addOption('autoincrement', $tableOptions['AUTO_INCREMENT']);
} }
$table->addOption('comment', $tableOptions['TABLE_COMMENT']); $table->addOption('comment', $tableOptions['TABLE_COMMENT']);
$table->addOption('create_options', $this->parseCreateOptions($tableOptions['CREATE_OPTIONS'])); $table->addOption('create_options', $this->parseCreateOptions($tableOptions['CREATE_OPTIONS']));
......
...@@ -37,7 +37,9 @@ class Table extends AbstractAsset ...@@ -37,7 +37,9 @@ class Table extends AbstractAsset
protected $_fkConstraints = []; protected $_fkConstraints = [];
/** @var mixed[] */ /** @var mixed[] */
protected $_options = []; protected $_options = [
'create_options' => [],
];
/** @var SchemaConfig|null */ /** @var SchemaConfig|null */
protected $_schemaConfig = null; protected $_schemaConfig = null;
...@@ -72,7 +74,7 @@ class Table extends AbstractAsset ...@@ -72,7 +74,7 @@ class Table extends AbstractAsset
$this->_addForeignKeyConstraint($constraint); $this->_addForeignKeyConstraint($constraint);
} }
$this->_options = $options; $this->_options = array_merge($this->_options, $options);
} }
/** /**
......
...@@ -60,6 +60,11 @@ class OCI8StatementTest extends DbalTestCase ...@@ -60,6 +60,11 @@ class OCI8StatementTest extends DbalTestCase
$this->equalTo($params[2]) $this->equalTo($params[2])
); );
// the return value is irrelevant to the test
// but it has to be compatible with the method signature
$statement->method('errorInfo')
->willReturn(false);
// can't pass to constructor since we don't have a real database handle, // can't pass to constructor since we don't have a real database handle,
// but execute must check the connection for the executeMode // but execute must check the connection for the executeMode
$conn = $this->getMockBuilder(OCI8Connection::class) $conn = $this->getMockBuilder(OCI8Connection::class)
......
...@@ -41,6 +41,10 @@ class PoolingShardManagerTest extends TestCase ...@@ -41,6 +41,10 @@ class PoolingShardManagerTest extends TestCase
{ {
$conn = $this->createConnectionMock(); $conn = $this->createConnectionMock();
$conn->expects($this->once())->method('connect')->with($this->equalTo(0)); $conn->expects($this->once())->method('connect')->with($this->equalTo(0));
$conn->method('getParams')
->willReturn([
'shardChoser' => $this->createMock(ShardChoser::class),
]);
$shardManager = new PoolingShardManager($conn); $shardManager = new PoolingShardManager($conn);
$shardManager->selectGlobal(); $shardManager->selectGlobal();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment