diff --git a/db_operations.php b/db_operations.php
index 215bbbaf2375..0bd9eef58541 100644
--- a/db_operations.php
+++ b/db_operations.php
@@ -343,11 +343,7 @@
}
$db_collation = PMA_getDbCollation($db);
-if (strtolower($db) == 'information_schema' || (PMA_DRIZZLE && strtolower($db) == 'data_dictionary')) {
- $is_information_schema = true;
-} else {
- $is_information_schema = false;
-}
+$is_information_schema = PMA_is_system_schema($db);
if (!$is_information_schema) {
if ($cfgRelation['commwork']) {
diff --git a/libraries/List.class.php b/libraries/List.class.php
index a64a8b487540..8303227b6884 100644
--- a/libraries/List.class.php
+++ b/libraries/List.class.php
@@ -83,8 +83,7 @@ public function getHtmlOptions($selected = '', $include_information_schema = tru
$options = '';
foreach ($this as $each_item) {
if (false === $include_information_schema
- && 'information_schema' === strtolower($each_item)
- && (!PMA_DRIZZLE || 'data_dictionary' == strtolower($each_item))) {
+ && PMA_is_system_schema($each_item)) {
continue;
}
$options .= '';
} else {
$out .= ' disabled="disabled" />';
diff --git a/libraries/common.lib.php b/libraries/common.lib.php
index b8f5a2329af2..7df77268153a 100644
--- a/libraries/common.lib.php
+++ b/libraries/common.lib.php
@@ -720,8 +720,7 @@ function PMA_getTableList($db, $tables = null, $limit_offset = 0, $limit_count =
// set this because PMA_Table::countRecords() can use it
$tbl_is_view = $table['TABLE_TYPE'] == 'VIEW';
- if ($tbl_is_view || strtolower($db) == 'information_schema'
- || (PMA_DRIZZLE && strtolower($db) == 'data_dictionary')) {
+ if ($tbl_is_view || PMA_is_system_schema($db)) {
$table['Rows'] = PMA_Table::countRecords($db, $table['Name'], false, true);
}
}
diff --git a/libraries/database_interface.lib.php b/libraries/database_interface.lib.php
index ebc77c02bae2..3b89264b8cd4 100644
--- a/libraries/database_interface.lib.php
+++ b/libraries/database_interface.lib.php
@@ -1662,6 +1662,21 @@ function PMA_DBI_get_triggers($db, $table = '', $delimiter = '//')
return($result);
}
+/**
+ * Checks whether given schema is a system schema: information_schema (MySQL and Drizzle)
+ * or data_dictionary (Drizzle)
+ *
+ * @param string $schema_name
+ * @param bool $test_for_mysql_schema Whether 'mysql' schema should be treated the same as IS and DD
+ * @return bool
+ */
+function PMA_is_system_schema($schema_name, $test_for_mysql_schema = false)
+{
+ return strtolower($schema_name) == 'information_schema'
+ || (PMA_DRIZZLE && strtolower($schema_name) == 'data_dictionary')
+ || ($test_for_mysql_schema && !PMA_DRIZZLE && $schema_name == 'mysql');
+}
+
/**
* Returns true if $db.$view_name is a view, false if not
*
diff --git a/libraries/db_common.inc.php b/libraries/db_common.inc.php
index d7c18f775288..05ee295f7f9f 100644
--- a/libraries/db_common.inc.php
+++ b/libraries/db_common.inc.php
@@ -18,11 +18,9 @@
$is_show_stats = $cfg['ShowStats'];
-if (strtolower($db) == 'information_schema' || (PMA_DRIZZLE && strtolower($db) == 'data_dictionary')) {
+$db_is_information_schema = PMA_is_system_schema($db);
+if ($db_is_information_schema) {
$is_show_stats = false;
- $db_is_information_schema = true;
-} else {
- $db_is_information_schema = false;
}
/**
diff --git a/libraries/db_info.inc.php b/libraries/db_info.inc.php
index 70d3df4868a1..9a92bad57d99 100644
--- a/libraries/db_info.inc.php
+++ b/libraries/db_info.inc.php
@@ -85,7 +85,7 @@ function PMA_fillTooltip(&$tooltip_truename, &$tooltip_aliasname, $table)
*/
$db_is_information_schema = false;
-if (strtolower($db) == 'information_schema' || (PMA_DRIZZLE && strtolower($db) == 'data_dictionary')) {
+if (PMA_is_system_schema($db)) {
$is_show_stats = false;
$db_is_information_schema = true;
}
diff --git a/libraries/mysql_charsets.lib.php b/libraries/mysql_charsets.lib.php
index 4c8a2a9a7c6f..e9d8d675af4d 100644
--- a/libraries/mysql_charsets.lib.php
+++ b/libraries/mysql_charsets.lib.php
@@ -166,7 +166,7 @@ function PMA_generateCharsetQueryPart($collation)
*/
function PMA_getDbCollation($db)
{
- if (strtolower($db) == 'information_schema' || (PMA_DRIZZLE && strtolower($db) == 'data_dictionary')) {
+ if (PMA_is_system_schema($db)) {
// We don't have to check the collation of the virtual
// information_schema database: We know it!
return 'utf8_general_ci';
diff --git a/libraries/replication.inc.php b/libraries/replication.inc.php
index 857f4dc8dafe..0871d32ec591 100644
--- a/libraries/replication.inc.php
+++ b/libraries/replication.inc.php
@@ -266,7 +266,7 @@ function PMA_replication_master_replicated_dbs($link = null)
$tmp_alldbs = PMA_DBI_query('SHOW DATABASES;', $link);
while ($tmp_row = PMA_DBI_fetch_row($tmp_alldbs)) {
- if ($tmp_row[0] == 'information_schema')
+ if (PMA_is_system_schema($tmp_row[0]))
continue;
if (count($do_db) == 0) {
if (array_search($tmp_row[0], $ignore_db) !== false) {
diff --git a/libraries/replication_gui.lib.php b/libraries/replication_gui.lib.php
index 2f57b2b37bc2..227dc5bcd9e1 100644
--- a/libraries/replication_gui.lib.php
+++ b/libraries/replication_gui.lib.php
@@ -19,7 +19,7 @@ function PMA_replication_db_multibox()
$multi_values .= '