diff --git a/lib/Doctrine/DBAL/Schema/SqliteSchemaManager.php b/lib/Doctrine/DBAL/Schema/SqliteSchemaManager.php index 68e1e1f8487..3de11178c9c 100644 --- a/lib/Doctrine/DBAL/Schema/SqliteSchemaManager.php +++ b/lib/Doctrine/DBAL/Schema/SqliteSchemaManager.php @@ -496,7 +496,7 @@ private function parseTableCommentFromSQL(string $table, string $sql) : ?string private function parseColumnCommentFromSQL(string $column, string $sql) : ?string { $pattern = '{[\s(,](?:\W' . preg_quote($this->_platform->quoteSingleIdentifier($column)) . '\W|\W' . preg_quote($column) - . '\W)(?:\(.*?\)|[^,(])*?,?((?:(?!\n))(?:\s*--[^\n]*\n?)+)}i'; + . '\W)(?:\([^)]*?\)|[^,(])*?,?((?:(?!\n))(?:\s*--[^\n]*\n?)+)}i'; if (preg_match($pattern, $sql, $match) !== 1) { return null; diff --git a/tests/Doctrine/Tests/DBAL/Functional/Schema/SqliteSchemaManagerTest.php b/tests/Doctrine/Tests/DBAL/Functional/Schema/SqliteSchemaManagerTest.php index cce8f92f72d..166b0d08d5b 100644 --- a/tests/Doctrine/Tests/DBAL/Functional/Schema/SqliteSchemaManagerTest.php +++ b/tests/Doctrine/Tests/DBAL/Functional/Schema/SqliteSchemaManagerTest.php @@ -278,4 +278,19 @@ public function testPrimaryKeyNoAutoIncrement() : void // with an empty table, non autoincrement rowid is always 1 $this->assertEquals(1, $lastUsedIdAfterDelete); } + + public function testOnlyOwnCommentIsParsed() : void + { + $table = new Table('own_column_comment'); + $table->addColumn('col1', 'string', ['length' => 16]); + $table->addColumn('col2', 'string', ['length' => 16, 'comment' => 'Column #2']); + $table->addColumn('col3', 'string', ['length' => 16]); + + $sm = $this->connection->getSchemaManager(); + $sm->createTable($table); + + $this->assertNull($sm->listTableDetails('own_column_comment') + ->getColumn('col1') + ->getComment()); + } }