From fab494f4c6af4d532f6070f0f80143f35cfb3b2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steve=20M=C3=BCller?= <st.mueller@dzh-online.de> Date: Fri, 8 Jan 2016 16:24:20 +0100 Subject: [PATCH] fix list foreign keys SQL database parameter evaluation --- lib/Doctrine/DBAL/Platforms/MySqlPlatform.php | 5 +---- .../Platforms/AbstractMySQLPlatformTestCase.php | 14 +++++++++++++- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/lib/Doctrine/DBAL/Platforms/MySqlPlatform.php b/lib/Doctrine/DBAL/Platforms/MySqlPlatform.php index 0e9ccc62d..ecdbb05a5 100644 --- a/lib/Doctrine/DBAL/Platforms/MySqlPlatform.php +++ b/lib/Doctrine/DBAL/Platforms/MySqlPlatform.php @@ -200,10 +200,7 @@ class MySqlPlatform extends AbstractPlatform " c.constraint_name = k.constraint_name AND ". " c.table_name = $table */ WHERE k.table_name = $table"; - // @TODO: This needs fixing. The condition has to be inverted. - // When fixed, AbstractMySQLPlatformTestCase::testQuotesDatabaseNameInListTableForeignKeysSQL test - // has to be completed. - $databaseNameSql = null === $database ? $database : 'DATABASE()'; + $databaseNameSql = null === $database ? 'DATABASE()' : "'$database'"; $sql .= " AND k.table_schema = $databaseNameSql /*!50116 AND c.constraint_schema = $databaseNameSql */"; $sql .= " AND k.`REFERENCED_COLUMN_NAME` is not NULL"; diff --git a/tests/Doctrine/Tests/DBAL/Platforms/AbstractMySQLPlatformTestCase.php b/tests/Doctrine/Tests/DBAL/Platforms/AbstractMySQLPlatformTestCase.php index 43befc1a1..bf298d491 100644 --- a/tests/Doctrine/Tests/DBAL/Platforms/AbstractMySQLPlatformTestCase.php +++ b/tests/Doctrine/Tests/DBAL/Platforms/AbstractMySQLPlatformTestCase.php @@ -415,7 +415,7 @@ abstract class AbstractMySQLPlatformTestCase extends AbstractPlatformTestCase $sql = $this->_platform->getAlterTableSQL($diff); $this->assertEquals(array( - "ALTER TABLE mytable DROP PRIMARY KEY", + "ALTER TABLE mytable DROP PRIMARY KEY", "ALTER TABLE mytable ADD PRIMARY KEY (foo)", ), $sql); } @@ -819,4 +819,16 @@ abstract class AbstractMySQLPlatformTestCase extends AbstractPlatformTestCase { $this->assertContains("'Foo''Bar\\\\'", $this->_platform->getListTableColumnsSQL('foo_table', "Foo'Bar\\"), '', true); } + + public function testListTableForeignKeysSQLEvaluatesDatabase() + { + $sql = $this->_platform->getListTableForeignKeysSQL('foo'); + + $this->assertContains('DATABASE()', $sql); + + $sql = $this->_platform->getListTableForeignKeysSQL('foo', 'bar'); + + $this->assertContains('bar', $sql); + $this->assertNotContains('DATABASE()', $sql); + } } -- 2.21.0