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