Skip to content

Commit d2452fa

Browse files
committed
🐛 Oracle: fix comment retrieval on table with reserved keyword name
1 parent 818eae9 commit d2452fa

File tree

2 files changed

+13
-7
lines changed

2 files changed

+13
-7
lines changed

src/Schema/OracleSchemaManager.php

+5-5
Original file line numberDiff line numberDiff line change
@@ -512,13 +512,13 @@ protected function fetchTableOptionsByTable(string $databaseName, ?string $table
512512

513513
$sql .= ' FROM ALL_TAB_COMMENTS WHERE ' . implode(' AND ', $conditions);
514514

515-
/** @var array<string,array<string,mixed>> $metadata */
516-
$metadata = $this->_conn->executeQuery($sql, $params)
517-
->fetchAllAssociativeIndexed();
515+
/** @var array<array{TABLE_NAME: string, COMMENTS: string|null}> $metadata */
516+
$metadata = $this->_conn->executeQuery($sql, $params)->fetchAllAssociative();
518517

519518
$tableOptions = [];
520-
foreach ($metadata as $table => $data) {
521-
$data = array_change_key_case($data, CASE_LOWER);
519+
foreach ($metadata as $data) {
520+
$data = array_change_key_case($data, CASE_LOWER);
521+
$table = $this->_getPortableTableDefinition($data);
522522

523523
$tableOptions[$table] = [
524524
'comment' => $data['comments'],

tests/Functional/Schema/SchemaManagerFunctionalTestCase.php

+8-2
Original file line numberDiff line numberDiff line change
@@ -1675,9 +1675,11 @@ public function testIntrospectReservedKeywordTableViaListTableDetails(): void
16751675
$this->createReservedKeywordTables();
16761676

16771677
$user = $this->schemaManager->introspectTable('"user"');
1678-
self::assertCount(2, $user->getColumns());
1678+
self::assertCount(3, $user->getColumns());
16791679
self::assertCount(2, $user->getIndexes());
16801680
self::assertCount(1, $user->getForeignKeys());
1681+
self::assertSame('table comment', $user->getComment());
1682+
self::assertSame('column comment', $user->getColumn('user')->getComment());
16811683
}
16821684

16831685
public function testIntrospectReservedKeywordTableViaListTables(): void
@@ -1688,9 +1690,11 @@ public function testIntrospectReservedKeywordTableViaListTables(): void
16881690

16891691
$user = $this->findTableByName($tables, 'user');
16901692
self::assertNotNull($user);
1691-
self::assertCount(2, $user->getColumns());
1693+
self::assertCount(3, $user->getColumns());
16921694
self::assertCount(2, $user->getIndexes());
16931695
self::assertCount(1, $user->getForeignKeys());
1696+
self::assertSame('table comment', $user->getComment());
1697+
self::assertSame('column comment', $user->getColumn('user')->getComment());
16941698
}
16951699

16961700
private function createReservedKeywordTables(): void
@@ -1703,7 +1707,9 @@ private function createReservedKeywordTables(): void
17031707
$schema = new Schema();
17041708

17051709
$user = $schema->createTable('user');
1710+
$user->setComment('table comment');
17061711
$user->addColumn('id', Types::INTEGER);
1712+
$user->addColumn('user', Types::INTEGER)->setComment('column comment');
17071713
$user->addColumn('group_id', Types::INTEGER);
17081714
$user->setPrimaryKey(['id']);
17091715
$user->addForeignKeyConstraint('group', ['group_id'], ['id']);

0 commit comments

Comments
 (0)