Merge pull request #6683 from alextech/bugfix/xml_sequence_params
Supply default values for optional values in sequence mapping if omitted by driver. Fixes: https://github.com/doctrine/doctrine2/issues/6682
This commit is contained in:
commit
3ca65e28fc
@ -3003,7 +3003,7 @@ class ClassMetadataInfo implements ClassMetadata
|
||||
*/
|
||||
public function setSequenceGeneratorDefinition(array $definition)
|
||||
{
|
||||
if ( ! isset($definition['sequenceName'])) {
|
||||
if ( ! isset($definition['sequenceName']) || trim($definition['sequenceName']) === '') {
|
||||
throw MappingException::missingSequenceName($this->name);
|
||||
}
|
||||
|
||||
@ -3012,6 +3012,14 @@ class ClassMetadataInfo implements ClassMetadata
|
||||
$definition['quoted'] = true;
|
||||
}
|
||||
|
||||
if ( ! isset($definition['allocationSize']) || trim($definition['allocationSize']) === '') {
|
||||
$definition['allocationSize'] = '1';
|
||||
}
|
||||
|
||||
if ( ! isset($definition['initialValue']) || trim($definition['initialValue']) === '') {
|
||||
$definition['initialValue'] = '1';
|
||||
}
|
||||
|
||||
$this->sequenceGeneratorDefinition = $definition;
|
||||
}
|
||||
|
||||
|
29
tests/Doctrine/Tests/ORM/Functional/Ticket/GH6682Test.php
Normal file
29
tests/Doctrine/Tests/ORM/Functional/Ticket/GH6682Test.php
Normal file
@ -0,0 +1,29 @@
|
||||
<?php
|
||||
|
||||
namespace Doctrine\Test\ORM\Functional\Ticket;
|
||||
|
||||
use Doctrine\ORM\Mapping\ClassMetadataInfo;
|
||||
use Doctrine\Tests\OrmFunctionalTestCase;
|
||||
|
||||
final class GH6682Test extends OrmFunctionalTestCase
|
||||
{
|
||||
/**
|
||||
* @group 6682
|
||||
*/
|
||||
public function testIssue() : void
|
||||
{
|
||||
$parsedDefinition = [
|
||||
'sequenceName' => 'test_sequence',
|
||||
'allocationSize' => '',
|
||||
'initialValue' => '',
|
||||
];
|
||||
|
||||
$classMetadataInfo = new ClassMetadataInfo('test_entity');
|
||||
$classMetadataInfo->setSequenceGeneratorDefinition($parsedDefinition);
|
||||
|
||||
self::assertSame(
|
||||
['sequenceName' => 'test_sequence', 'allocationSize' => '1', 'initialValue' => '1'],
|
||||
$classMetadataInfo->sequenceGeneratorDefinition
|
||||
);
|
||||
}
|
||||
}
|
@ -1188,15 +1188,19 @@ class ClassMetadataTest extends OrmTestCase
|
||||
|
||||
/**
|
||||
* @group DDC-2662
|
||||
* @group 6682
|
||||
*/
|
||||
public function testQuotedSequenceName()
|
||||
public function testQuotedSequenceName() : void
|
||||
{
|
||||
$cm = new ClassMetadata(CMS\CmsUser::class);
|
||||
$cm->initializeReflection(new RuntimeReflectionService());
|
||||
|
||||
$cm->initializeReflection(new RuntimeReflectionService());
|
||||
$cm->setSequenceGeneratorDefinition(['sequenceName' => '`foo`']);
|
||||
|
||||
$this->assertEquals(['sequenceName' => 'foo', 'quoted' => true], $cm->sequenceGeneratorDefinition);
|
||||
self::assertSame(
|
||||
['sequenceName' => 'foo', 'quoted' => true, 'allocationSize' => '1', 'initialValue' => '1'],
|
||||
$cm->sequenceGeneratorDefinition
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
x
Reference in New Issue
Block a user