diff --git a/lib/Doctrine/ORM/Mapping/ClassMetadataInfo.php b/lib/Doctrine/ORM/Mapping/ClassMetadataInfo.php index 7794c8c4d..0747d4435 100644 --- a/lib/Doctrine/ORM/Mapping/ClassMetadataInfo.php +++ b/lib/Doctrine/ORM/Mapping/ClassMetadataInfo.php @@ -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; } diff --git a/tests/Doctrine/Tests/ORM/Functional/Ticket/GH6682Test.php b/tests/Doctrine/Tests/ORM/Functional/Ticket/GH6682Test.php new file mode 100644 index 000000000..a8fd76fa2 --- /dev/null +++ b/tests/Doctrine/Tests/ORM/Functional/Ticket/GH6682Test.php @@ -0,0 +1,29 @@ + 'test_sequence', + 'allocationSize' => '', + 'initialValue' => '', + ]; + + $classMetadataInfo = new ClassMetadataInfo('test_entity'); + $classMetadataInfo->setSequenceGeneratorDefinition($parsedDefinition); + + self::assertSame( + ['sequenceName' => 'test_sequence', 'allocationSize' => '1', 'initialValue' => '1'], + $classMetadataInfo->sequenceGeneratorDefinition + ); + } +} diff --git a/tests/Doctrine/Tests/ORM/Mapping/ClassMetadataTest.php b/tests/Doctrine/Tests/ORM/Mapping/ClassMetadataTest.php index 24d9559f7..a7be70be8 100644 --- a/tests/Doctrine/Tests/ORM/Mapping/ClassMetadataTest.php +++ b/tests/Doctrine/Tests/ORM/Mapping/ClassMetadataTest.php @@ -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 + ); } /**