Enforce sequence XSD requirement
Supply default values for allocationSize and initialValue optional parameters. Related to: https://github.com/doctrine/doctrine2/issues/6682
This commit is contained in:
parent
dfc31bc855
commit
b3331b2237
@ -3003,7 +3003,7 @@ class ClassMetadataInfo implements ClassMetadata
|
|||||||
*/
|
*/
|
||||||
public function setSequenceGeneratorDefinition(array $definition)
|
public function setSequenceGeneratorDefinition(array $definition)
|
||||||
{
|
{
|
||||||
if ( ! isset($definition['sequenceName'])) {
|
if ( ! isset($definition['sequenceName']) || trim($definition['sequenceName']) === '') {
|
||||||
throw MappingException::missingSequenceName($this->name);
|
throw MappingException::missingSequenceName($this->name);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3012,6 +3012,14 @@ class ClassMetadataInfo implements ClassMetadata
|
|||||||
$definition['quoted'] = true;
|
$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;
|
$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 DDC-2662
|
||||||
|
* @group 6682
|
||||||
*/
|
*/
|
||||||
public function testQuotedSequenceName()
|
public function testQuotedSequenceName() : void
|
||||||
{
|
{
|
||||||
$cm = new ClassMetadata(CMS\CmsUser::class);
|
$cm = new ClassMetadata(CMS\CmsUser::class);
|
||||||
$cm->initializeReflection(new RuntimeReflectionService());
|
|
||||||
|
|
||||||
|
$cm->initializeReflection(new RuntimeReflectionService());
|
||||||
$cm->setSequenceGeneratorDefinition(['sequenceName' => '`foo`']);
|
$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