From e2ce403a79200a24d39671b96b885d88c1e2d037 Mon Sep 17 00:00:00 2001 From: Kamil Tekiela Date: Tue, 9 Jan 2024 23:16:24 +0100 Subject: [PATCH] Use getTables instead of 'SHOW TABLES FROM' Signed-off-by: Kamil Tekiela --- src/ConfigStorage/Relation.php | 84 ++++++++++---------- tests/classes/ConfigStorage/RelationTest.php | 22 ++--- tests/classes/Stubs/DbiDummy.php | 2 +- 3 files changed, 53 insertions(+), 55 deletions(-) diff --git a/src/ConfigStorage/Relation.php b/src/ConfigStorage/Relation.php index 307eb5f836..7f2cdf351e 100644 --- a/src/ConfigStorage/Relation.php +++ b/src/ConfigStorage/Relation.php @@ -154,52 +154,50 @@ class Relation } $config = Config::getInstance(); - $tabQuery = 'SHOW TABLES FROM ' - . Util::backquote($config->selectedServer['pmadb']); - $tableRes = $this->dbi->tryQueryAsControlUser($tabQuery); - if ($tableRes === false) { + $tables = $this->dbi->getTables($config->selectedServer['pmadb'], Connection::TYPE_CONTROL); + if ($tables === []) { return null; } - while ($currTable = $tableRes->fetchRow()) { - if ($currTable[0] == $config->selectedServer['bookmarktable']) { - $relationParams['bookmark'] = (string) $currTable[0]; - } elseif ($currTable[0] == $config->selectedServer['relation']) { - $relationParams['relation'] = (string) $currTable[0]; - } elseif ($currTable[0] == $config->selectedServer['table_info']) { - $relationParams['table_info'] = (string) $currTable[0]; - } elseif ($currTable[0] == $config->selectedServer['table_coords']) { - $relationParams['table_coords'] = (string) $currTable[0]; - } elseif ($currTable[0] == $config->selectedServer['column_info']) { - $relationParams['column_info'] = (string) $currTable[0]; - } elseif ($currTable[0] == $config->selectedServer['pdf_pages']) { - $relationParams['pdf_pages'] = (string) $currTable[0]; - } elseif ($currTable[0] == $config->selectedServer['history']) { - $relationParams['history'] = (string) $currTable[0]; - } elseif ($currTable[0] == $config->selectedServer['recent']) { - $relationParams['recent'] = (string) $currTable[0]; - } elseif ($currTable[0] == $config->selectedServer['favorite']) { - $relationParams['favorite'] = (string) $currTable[0]; - } elseif ($currTable[0] == $config->selectedServer['table_uiprefs']) { - $relationParams['table_uiprefs'] = (string) $currTable[0]; - } elseif ($currTable[0] == $config->selectedServer['tracking']) { - $relationParams['tracking'] = (string) $currTable[0]; - } elseif ($currTable[0] == $config->selectedServer['userconfig']) { - $relationParams['userconfig'] = (string) $currTable[0]; - } elseif ($currTable[0] == $config->selectedServer['users']) { - $relationParams['users'] = (string) $currTable[0]; - } elseif ($currTable[0] == $config->selectedServer['usergroups']) { - $relationParams['usergroups'] = (string) $currTable[0]; - } elseif ($currTable[0] == $config->selectedServer['navigationhiding']) { - $relationParams['navigationhiding'] = (string) $currTable[0]; - } elseif ($currTable[0] == $config->selectedServer['savedsearches']) { - $relationParams['savedsearches'] = (string) $currTable[0]; - } elseif ($currTable[0] == $config->selectedServer['central_columns']) { - $relationParams['central_columns'] = (string) $currTable[0]; - } elseif ($currTable[0] == $config->selectedServer['designer_settings']) { - $relationParams['designer_settings'] = (string) $currTable[0]; - } elseif ($currTable[0] == $config->selectedServer['export_templates']) { - $relationParams['export_templates'] = (string) $currTable[0]; + foreach ($tables as $table) { + if ($table == $config->selectedServer['bookmarktable']) { + $relationParams['bookmark'] = $table; + } elseif ($table == $config->selectedServer['relation']) { + $relationParams['relation'] = $table; + } elseif ($table == $config->selectedServer['table_info']) { + $relationParams['table_info'] = $table; + } elseif ($table == $config->selectedServer['table_coords']) { + $relationParams['table_coords'] = $table; + } elseif ($table == $config->selectedServer['column_info']) { + $relationParams['column_info'] = $table; + } elseif ($table == $config->selectedServer['pdf_pages']) { + $relationParams['pdf_pages'] = $table; + } elseif ($table == $config->selectedServer['history']) { + $relationParams['history'] = $table; + } elseif ($table == $config->selectedServer['recent']) { + $relationParams['recent'] = $table; + } elseif ($table == $config->selectedServer['favorite']) { + $relationParams['favorite'] = $table; + } elseif ($table == $config->selectedServer['table_uiprefs']) { + $relationParams['table_uiprefs'] = $table; + } elseif ($table == $config->selectedServer['tracking']) { + $relationParams['tracking'] = $table; + } elseif ($table == $config->selectedServer['userconfig']) { + $relationParams['userconfig'] = $table; + } elseif ($table == $config->selectedServer['users']) { + $relationParams['users'] = $table; + } elseif ($table == $config->selectedServer['usergroups']) { + $relationParams['usergroups'] = $table; + } elseif ($table == $config->selectedServer['navigationhiding']) { + $relationParams['navigationhiding'] = $table; + } elseif ($table == $config->selectedServer['savedsearches']) { + $relationParams['savedsearches'] = $table; + } elseif ($table == $config->selectedServer['central_columns']) { + $relationParams['central_columns'] = $table; + } elseif ($table == $config->selectedServer['designer_settings']) { + $relationParams['designer_settings'] = $table; + } elseif ($table == $config->selectedServer['export_templates']) { + $relationParams['export_templates'] = $table; } } diff --git a/tests/classes/ConfigStorage/RelationTest.php b/tests/classes/ConfigStorage/RelationTest.php index bfc4211969..4fe0a1157f 100644 --- a/tests/classes/ConfigStorage/RelationTest.php +++ b/tests/classes/ConfigStorage/RelationTest.php @@ -234,7 +234,7 @@ class RelationTest extends AbstractTestCase ); $dummyDbi->addResult( - 'SHOW TABLES FROM `db_pma`', + 'SHOW TABLES FROM `db_pma`;', [['pma__userconfig']], ['Tables_in_db_pma'], ); @@ -296,7 +296,7 @@ class RelationTest extends AbstractTestCase ); $dummyDbi->addResult( - 'SHOW TABLES FROM `db_pma`', + 'SHOW TABLES FROM `db_pma`;', [['pma__userconfig']], ['Tables_in_db_pma'], ); @@ -573,7 +573,7 @@ class RelationTest extends AbstractTestCase ); $dummyDbi->addResult( - 'SHOW TABLES FROM `db_pma`', + 'SHOW TABLES FROM `db_pma`;', [ ['pma__userconfig'], // This is important as it tricks default existing table detection @@ -897,7 +897,7 @@ class RelationTest extends AbstractTestCase $dummyDbi->addResult('CREATE DATABASE IF NOT EXISTS `phpmyadmin`', true); $dummyDbi->addResult( - 'SHOW TABLES FROM `phpmyadmin`', + 'SHOW TABLES FROM `phpmyadmin`;', [], ); $dummyDbi->addSelectDb('phpmyadmin'); @@ -1483,7 +1483,7 @@ class RelationTest extends AbstractTestCase ); $dummyDbi->addResult( - 'SHOW TABLES FROM `phpmyadmin`', + 'SHOW TABLES FROM `phpmyadmin`;', [['pma__userconfig']], ['Tables_in_phpmyadmin'], ); @@ -1570,7 +1570,7 @@ class RelationTest extends AbstractTestCase ); $dummyDbi->addResult( - 'SHOW TABLES FROM `phpmyadmin`', + 'SHOW TABLES FROM `phpmyadmin`;', [['pma__userconfig']], ['Tables_in_phpmyadmin'], ); @@ -1656,7 +1656,7 @@ class RelationTest extends AbstractTestCase ); $dummyDbi->addResult( - 'SHOW TABLES FROM `PMA-storage`', + 'SHOW TABLES FROM `PMA-storage`;', [['pma__userconfig_custom', 'pma__usergroups']], ['Tables_in_PMA-storage'], ); @@ -1681,7 +1681,7 @@ class RelationTest extends AbstractTestCase $dummyDbi->assertAllSelectsConsumed(); $dummyDbi->addResult( - 'SHOW TABLES FROM `PMA-storage`', + 'SHOW TABLES FROM `PMA-storage`;', [['pma__userconfig_custom', 'pma__usergroups']], ['Tables_in_PMA-storage'], ); @@ -1766,7 +1766,7 @@ class RelationTest extends AbstractTestCase ['Tables_in_PMA-storage'], ); $dummyDbi->addResult( - 'SHOW TABLES FROM `PMA-storage`', + 'SHOW TABLES FROM `PMA-storage`;', [ ['pma__tracking'], ], @@ -1796,7 +1796,7 @@ class RelationTest extends AbstractTestCase $dummyDbi->assertAllSelectsConsumed(); $dummyDbi->addResult( - 'SHOW TABLES FROM `PMA-storage`', + 'SHOW TABLES FROM `PMA-storage`;', [ [ 'pma__userconfig_custom', @@ -1888,7 +1888,7 @@ class RelationTest extends AbstractTestCase ); $dummyDbi->addResult( - 'SHOW TABLES FROM `PMA-storage`', + 'SHOW TABLES FROM `PMA-storage`;', [ ['pma__favorite_custom'], ], diff --git a/tests/classes/Stubs/DbiDummy.php b/tests/classes/Stubs/DbiDummy.php index 73219b23d3..701a3072eb 100644 --- a/tests/classes/Stubs/DbiDummy.php +++ b/tests/classes/Stubs/DbiDummy.php @@ -852,7 +852,7 @@ class DbiDummy implements DbiExtension 'result' => [['utf8_general_ci']], ], ['query' => 'SELECT @@collation_database', 'columns' => ['@@collation_database'], 'result' => [['bar']]], - ['query' => 'SHOW TABLES FROM `phpmyadmin`', 'result' => []], + ['query' => 'SHOW TABLES FROM `phpmyadmin`;', 'result' => []], [ 'query' => 'SELECT tracking_active FROM `pmadb`.`tracking`' . " WHERE db_name = 'pma_test_db'" .