Fixed failing test which was ignoring a required (not null) column (#26303)

* Fixed failing test which was ignoring a required (not null) column

* restored test to original, catching DriverException which also catches ConstraintViolationException

* catch ConstraintViolationException again

* removed unnecessary field from this test

* clobfield should be nullable

* clobfield now is nullable

* removed autoincrement since whenever this strategy is enabled, oracle would not throw constraint violation exceptions (needed for setValues), which mysql still does

* this field does not auto increment anymore

* mark integerfield as primary, since it is not getting marked as such through auto increment anymore,
integerfield default always has been 0 instead of null

Signed-off-by: Morris Jobke <hey@morrisjobke.de>
This commit is contained in:
Philipp Schaffrath 2017-01-10 12:10:36 +01:00 committed by Morris Jobke
parent 39afcbd49f
commit 2ccf544ad7
No known key found for this signature in database
GPG Key ID: 9CE5ED29E7FCD38A
4 changed files with 7 additions and 8 deletions

View File

@ -34,6 +34,7 @@ use Doctrine\DBAL\Configuration;
use Doctrine\DBAL\Cache\QueryCacheProfile;
use Doctrine\Common\EventManager;
use Doctrine\DBAL\Platforms\MySqlPlatform;
use Doctrine\DBAL\Exception\ConstraintViolationException;
use OC\DB\QueryBuilder\QueryBuilder;
use OCP\DB\QueryBuilder\IQueryBuilder;
use OCP\IDBConnection;
@ -284,7 +285,7 @@ class Connection extends \Doctrine\DBAL\Connection implements IDBConnection {
}, array_merge($keys, $values))
);
return $insertQb->execute();
} catch (\Doctrine\DBAL\Exception\ConstraintViolationException $e) {
} catch (ConstraintViolationException $e) {
// value already exists, try update
$updateQb = $this->getQueryBuilder();
$updateQb->update($table);

View File

@ -124,8 +124,7 @@ class ConnectionTest extends \Test\TestCase {
$this->connection->setValues('table', [
'integerfield' => 1
], [
'textfield' => 'foo',
'clobfield' => 'not_null'
'textfield' => 'foo'
]);
$this->connection->setValues('table', [

View File

@ -42,8 +42,8 @@ class MDB2SchemaReaderTest extends \Test\TestCase {
$this->assertCount(8, $table->getColumns());
$this->assertEquals(4, $table->getColumn('integerfield')->getLength());
$this->assertTrue($table->getColumn('integerfield')->getAutoincrement());
$this->assertNull($table->getColumn('integerfield')->getDefault());
$this->assertFalse($table->getColumn('integerfield')->getAutoincrement());
$this->assertEquals(0, $table->getColumn('integerfield')->getDefault());
$this->assertTrue($table->getColumn('integerfield')->getNotnull());
$this->assertInstanceOf('Doctrine\DBAL\Types\IntegerType', $table->getColumn('integerfield')->getType());
@ -58,7 +58,7 @@ class MDB2SchemaReaderTest extends \Test\TestCase {
$this->assertNull($table->getColumn('clobfield')->getLength());
$this->assertFalse($table->getColumn('clobfield')->getAutoincrement());
$this->assertNull($table->getColumn('clobfield')->getDefault());
$this->assertTrue($table->getColumn('clobfield')->getNotnull());
$this->assertFalse($table->getColumn('clobfield')->getNotnull());
$this->assertInstanceOf('Doctrine\DBAL\Types\TextType', $table->getColumn('clobfield')->getType());
$this->assertNull($table->getColumn('booleanfield')->getLength());

View File

@ -17,7 +17,7 @@
<type>integer</type>
<default>0</default>
<notnull>true</notnull>
<autoincrement>1</autoincrement>
<primary>true</primary>
<length>4</length>
</field>
<field>
@ -37,7 +37,6 @@
<field>
<name>clobfield</name>
<type>clob</type>
<notnull>true</notnull>
</field>
<field>
<name>booleanfield</name>