aboutsummaryrefslogtreecommitdiff
path: root/srcs/phpmyadmin/libraries/classes/InternalRelations.php
diff options
context:
space:
mode:
Diffstat (limited to 'srcs/phpmyadmin/libraries/classes/InternalRelations.php')
-rw-r--r--srcs/phpmyadmin/libraries/classes/InternalRelations.php505
1 files changed, 505 insertions, 0 deletions
diff --git a/srcs/phpmyadmin/libraries/classes/InternalRelations.php b/srcs/phpmyadmin/libraries/classes/InternalRelations.php
new file mode 100644
index 0000000..771ccc9
--- /dev/null
+++ b/srcs/phpmyadmin/libraries/classes/InternalRelations.php
@@ -0,0 +1,505 @@
+<?php
+/* vim: set expandtab sw=4 ts=4 sts=4: */
+/**
+ * Internal relations for information schema and mysql databases.
+ * @package PhpMyAdmin
+ */
+declare(strict_types=1);
+
+namespace PhpMyAdmin;
+
+/**
+ * Internal relations for information schema and mysql databases.
+ * @package PhpMyAdmin
+ */
+class InternalRelations
+{
+ /**
+ * @var array
+ */
+ private static $informationSchema = [
+ 'CHARACTER_SETS' => [
+ 'DEFAULT_COLLATE_NAME' => [
+ 'foreign_db' => 'information_schema',
+ 'foreign_table' => 'COLLATIONS',
+ 'foreign_field' => 'COLLATION_NAME',
+ ],
+ ],
+ 'COLLATIONS' => [
+ 'CHARACTER_SET_NAME' => [
+ 'foreign_db' => 'information_schema',
+ 'foreign_table' => 'CHARACTER_SETS',
+ 'foreign_field' => 'CHARACTER_SET_NAME',
+ ],
+ ],
+ 'COLLATION_CHARACTER_SET_APPLICABILITY' => [
+ 'CHARACTER_SET_NAME' => [
+ 'foreign_db' => 'information_schema',
+ 'foreign_table' => 'CHARACTER_SETS',
+ 'foreign_field' => 'CHARACTER_SET_NAME',
+ ],
+ 'COLLATION_NAME' => [
+ 'foreign_db' => 'information_schema',
+ 'foreign_table' => 'COLLATIONS',
+ 'foreign_field' => 'COLLATION_NAME',
+ ],
+ ],
+ 'COLUMNS' => [
+ 'TABLE_SCHEMA' => [
+ 'foreign_db' => 'information_schema',
+ 'foreign_table' => 'SCHEMATA',
+ 'foreign_field' => 'SCHEMA_NAME',
+ ],
+ 'CHARACTER_SET_NAME' => [
+ 'foreign_db' => 'information_schema',
+ 'foreign_table' => 'CHARACTER_SETS',
+ 'foreign_field' => 'CHARACTER_SET_NAME',
+ ],
+ 'COLLATION_NAME' => [
+ 'foreign_db' => 'information_schema',
+ 'foreign_table' => 'COLLATIONS',
+ 'foreign_field' => 'COLLATION_NAME',
+ ],
+ ],
+ 'COLUMN_PRIVILEGES' => [
+ 'TABLE_SCHEMA' => [
+ 'foreign_db' => 'information_schema',
+ 'foreign_table' => 'SCHEMATA',
+ 'foreign_field' => 'SCHEMA_NAME',
+ ],
+ ],
+ 'EVENTS' => [
+ 'EVENT_SCHEMA' => [
+ 'foreign_db' => 'information_schema',
+ 'foreign_table' => 'SCHEMATA',
+ 'foreign_field' => 'SCHEMA_NAME',
+ ],
+ 'CHARACTER_SET_CLIENT' => [
+ 'foreign_db' => 'information_schema',
+ 'foreign_table' => 'CHARACTER_SETS',
+ 'foreign_field' => 'CHARACTER_SET_NAME',
+ ],
+ 'COLLATION_CONNECTION' => [
+ 'foreign_db' => 'information_schema',
+ 'foreign_table' => 'COLLATIONS',
+ 'foreign_field' => 'COLLATION_NAME',
+ ],
+ 'DATABASE_COLLATION' => [
+ 'foreign_db' => 'information_schema',
+ 'foreign_table' => 'COLLATIONS',
+ 'foreign_field' => 'COLLATION_NAME',
+ ],
+ ],
+ 'FILES' => [
+ 'TABLESPACE_NAME' => [
+ 'foreign_db' => 'information_schema',
+ 'foreign_table' => 'TABLESPACES',
+ 'foreign_field' => 'TABLESPACE_NAME',
+ ],
+ 'TABLE_SCHEMA' => [
+ 'foreign_db' => 'information_schema',
+ 'foreign_table' => 'SCHEMATA',
+ 'foreign_field' => 'SCHEMA_NAME',
+ ],
+ 'COLLATION_CONNECTION' => [
+ 'foreign_db' => 'information_schema',
+ 'foreign_table' => 'COLLATIONS',
+ 'foreign_field' => 'COLLATION_NAME',
+ ],
+ 'ENGINE' => [
+ 'foreign_db' => 'information_schema',
+ 'foreign_table' => 'ENGINES',
+ 'foreign_field' => 'ENGINE',
+ ],
+ ],
+ 'KEY_COLUMN_USAGE' => [
+ 'CONSTRAINT_SCHEMA' => [
+ 'foreign_db' => 'information_schema',
+ 'foreign_table' => 'SCHEMATA',
+ 'foreign_field' => 'SCHEMA_NAME',
+ ],
+ 'TABLE_SCHEMA' => [
+ 'foreign_db' => 'information_schema',
+ 'foreign_table' => 'SCHEMATA',
+ 'foreign_field' => 'SCHEMA_NAME',
+ ],
+ 'REFERENCED_TABLE_SCHEMA' => [
+ 'foreign_db' => 'information_schema',
+ 'foreign_table' => 'SCHEMATA',
+ 'foreign_field' => 'SCHEMA_NAME',
+ ],
+ ],
+ 'PARAMETERS' => [
+ 'SPECIFIC_SCHEMA' => [
+ 'foreign_db' => 'information_schema',
+ 'foreign_table' => 'SCHEMATA',
+ 'foreign_field' => 'SCHEMA_NAME',
+ ],
+ 'CHARACTER_SET_NAME' => [
+ 'foreign_db' => 'information_schema',
+ 'foreign_table' => 'CHARACTER_SETS',
+ 'foreign_field' => 'CHARACTER_SET_NAME',
+ ],
+ 'COLLATION_NAME' => [
+ 'foreign_db' => 'information_schema',
+ 'foreign_table' => 'COLLATIONS',
+ 'foreign_field' => 'COLLATION_NAME',
+ ],
+ ],
+ 'PARTITIONS' => [
+ 'TABLE_SCHEMA' => [
+ 'foreign_db' => 'information_schema',
+ 'foreign_table' => 'SCHEMATA',
+ 'foreign_field' => 'SCHEMA_NAME',
+ ],
+ 'TABLESPACE_NAME' => [
+ 'foreign_db' => 'information_schema',
+ 'foreign_table' => 'TABLESPACES',
+ 'foreign_field' => 'TABLESPACE_NAME',
+ ],
+ ],
+ 'PROCESSLIST' => [
+ 'DB' => [
+ 'foreign_db' => 'information_schema',
+ 'foreign_table' => 'SCHEMATA',
+ 'foreign_field' => 'SCHEMA_NAME',
+ ],
+ ],
+ 'REFERENTIAL_CONSTRAINTS' => [
+ 'CONSTRAINT_SCHEMA' => [
+ 'foreign_db' => 'information_schema',
+ 'foreign_table' => 'SCHEMATA',
+ 'foreign_field' => 'SCHEMA_NAME',
+ ],
+ 'UNIQUE_CONSTRAINT_SCHEMA' => [
+ 'foreign_db' => 'information_schema',
+ 'foreign_table' => 'SCHEMATA',
+ 'foreign_field' => 'SCHEMA_NAME',
+ ],
+ ],
+ 'ROUTINES' => [
+ 'ROUTINE_SCHEMA' => [
+ 'foreign_db' => 'information_schema',
+ 'foreign_table' => 'SCHEMATA',
+ 'foreign_field' => 'SCHEMA_NAME',
+ ],
+ 'CHARACTER_SET_NAME' => [
+ 'foreign_db' => 'information_schema',
+ 'foreign_table' => 'CHARACTER_SETS',
+ 'foreign_field' => 'CHARACTER_SET_NAME',
+ ],
+ 'COLLATION_NAME' => [
+ 'foreign_db' => 'information_schema',
+ 'foreign_table' => 'COLLATIONS',
+ 'foreign_field' => 'COLLATION_NAME',
+ ],
+ 'CHARACTER_SET_CLIENT' => [
+ 'foreign_db' => 'information_schema',
+ 'foreign_table' => 'CHARACTER_SETS',
+ 'foreign_field' => 'CHARACTER_SET_NAME',
+ ],
+ 'COLLATION_CONNECTION' => [
+ 'foreign_db' => 'information_schema',
+ 'foreign_table' => 'COLLATIONS',
+ 'foreign_field' => 'COLLATION_NAME',
+ ],
+ 'DATABASE_COLLATION' => [
+ 'foreign_db' => 'information_schema',
+ 'foreign_table' => 'COLLATIONS',
+ 'foreign_field' => 'COLLATION_NAME',
+ ],
+ ],
+ 'SCHEMATA' => [
+ 'DEFAULT_CHARACTER_SET_NAME' => [
+ 'foreign_db' => 'information_schema',
+ 'foreign_table' => 'CHARACTER_SETS',
+ 'foreign_field' => 'CHARACTER_SET_NAME',
+ ],
+ 'DEFAULT_COLLATION_NAME' => [
+ 'foreign_db' => 'information_schema',
+ 'foreign_table' => 'COLLATIONS',
+ 'foreign_field' => 'COLLATION_NAME',
+ ],
+ ],
+ 'SCHEMA_PRIVILEGES' => [
+ 'TABLE_SCHEMA' => [
+ 'foreign_db' => 'information_schema',
+ 'foreign_table' => 'SCHEMATA',
+ 'foreign_field' => 'SCHEMA_NAME',
+ ],
+ ],
+ 'STATISTICS' => [
+ 'TABLE_SCHEMA' => [
+ 'foreign_db' => 'information_schema',
+ 'foreign_table' => 'SCHEMATA',
+ 'foreign_field' => 'SCHEMA_NAME',
+ ],
+ 'INDEX_SCHEMA' => [
+ 'foreign_db' => 'information_schema',
+ 'foreign_table' => 'SCHEMATA',
+ 'foreign_field' => 'SCHEMA_NAME',
+ ],
+ ],
+ 'TABLES' => [
+ 'TABLE_SCHEMA' => [
+ 'foreign_db' => 'information_schema',
+ 'foreign_table' => 'SCHEMATA',
+ 'foreign_field' => 'SCHEMA_NAME',
+ ],
+ 'TABLE_COLLATION' => [
+ 'foreign_db' => 'information_schema',
+ 'foreign_table' => 'COLLATIONS',
+ 'foreign_field' => 'COLLATION_NAME',
+ ],
+ 'ENGINE' => [
+ 'foreign_db' => 'information_schema',
+ 'foreign_table' => 'ENGINES',
+ 'foreign_field' => 'ENGINE',
+ ],
+ ],
+ 'TABLESAPCES' => [
+ 'ENGINE' => [
+ 'foreign_db' => 'information_schema',
+ 'foreign_table' => 'ENGINES',
+ 'foreign_field' => 'ENGINE',
+ ],
+ ],
+ 'TABLE_CONSTRAINTS' => [
+ 'CONSTRAINT_SCHEMA' => [
+ 'foreign_db' => 'information_schema',
+ 'foreign_table' => 'SCHEMATA',
+ 'foreign_field' => 'SCHEMA_NAME',
+ ],
+ 'TABLE_SCHEMA' => [
+ 'foreign_db' => 'information_schema',
+ 'foreign_table' => 'SCHEMATA',
+ 'foreign_field' => 'SCHEMA_NAME',
+ ],
+ ],
+ 'TABLE_PRIVILEGES' => [
+ 'TABLE_SCHEMA' => [
+ 'foreign_db' => 'information_schema',
+ 'foreign_table' => 'SCHEMATA',
+ 'foreign_field' => 'SCHEMA_NAME',
+ ],
+ ],
+ 'TRIGGERS' => [
+ 'TRIGGER_SCHEMA' => [
+ 'foreign_db' => 'information_schema',
+ 'foreign_table' => 'SCHEMATA',
+ 'foreign_field' => 'SCHEMA_NAME',
+ ],
+ 'EVENT_OBJECT_SCHEMA' => [
+ 'foreign_db' => 'information_schema',
+ 'foreign_table' => 'SCHEMATA',
+ 'foreign_field' => 'SCHEMA_NAME',
+ ],
+ 'CHARACTER_SET_CLIENT' => [
+ 'foreign_db' => 'information_schema',
+ 'foreign_table' => 'CHARACTER_SETS',
+ 'foreign_field' => 'CHARACTER_SET_NAME',
+ ],
+ 'COLLATION_CONNECTION' => [
+ 'foreign_db' => 'information_schema',
+ 'foreign_table' => 'COLLATIONS',
+ 'foreign_field' => 'COLLATION_NAME',
+ ],
+ 'DATABASE_COLLATION' => [
+ 'foreign_db' => 'information_schema',
+ 'foreign_table' => 'COLLATIONS',
+ 'foreign_field' => 'COLLATION_NAME',
+ ],
+ ],
+ 'VIEWS' => [
+ 'TABLE_SCHEMA' => [
+ 'foreign_db' => 'information_schema',
+ 'foreign_table' => 'SCHEMATA',
+ 'foreign_field' => 'SCHEMA_NAME',
+ ],
+ 'CHARACTER_SET_CLIENT' => [
+ 'foreign_db' => 'information_schema',
+ 'foreign_table' => 'CHARACTER_SETS',
+ 'foreign_field' => 'CHARACTER_SET_NAME',
+ ],
+ 'COLLATION_CONNECTION' => [
+ 'foreign_db' => 'information_schema',
+ 'foreign_table' => 'COLLATIONS',
+ 'foreign_field' => 'COLLATION_NAME',
+ ],
+ ],
+ ];
+
+ /**
+ * @var array
+ */
+ private static $mysql = [
+ 'columns_priv' => [
+ 'Db' => [
+ 'foreign_db' => 'information_schema',
+ 'foreign_table' => 'SCHEMATA',
+ 'foreign_field' => 'SCHEMA_NAME',
+ ],
+ ],
+ 'db' => [
+ 'Db' => [
+ 'foreign_db' => 'information_schema',
+ 'foreign_table' => 'SCHEMATA',
+ 'foreign_field' => 'SCHEMA_NAME',
+ ],
+ ],
+ 'event' => [
+ 'db' => [
+ 'foreign_db' => 'information_schema',
+ 'foreign_table' => 'SCHEMATA',
+ 'foreign_field' => 'SCHEMA_NAME',
+ ],
+ 'character_set_client' => [
+ 'foreign_db' => 'information_schema',
+ 'foreign_table' => 'CHARACTER_SETS',
+ 'foreign_field' => 'CHARACTER_SET_NAME',
+ ],
+ 'collation_connection' => [
+ 'foreign_db' => 'information_schema',
+ 'foreign_table' => 'COLLATIONS',
+ 'foreign_field' => 'COLLATION_NAME',
+ ],
+ 'db_collation' => [
+ 'foreign_db' => 'information_schema',
+ 'foreign_table' => 'COLLATIONS',
+ 'foreign_field' => 'COLLATION_NAME',
+ ],
+ ],
+ 'help_category' => [
+ 'parent_category_id' => [
+ 'foreign_db' => 'mysql',
+ 'foreign_table' => 'help_category',
+ 'foreign_field' => 'help_category_id',
+ ],
+ ],
+ 'help_relation' => [
+ 'help_topic_id' => [
+ 'foreign_db' => 'mysql',
+ 'foreign_table' => 'help_topic',
+ 'foreign_field' => 'help_topic_id',
+ ],
+ 'help_keyword_id' => [
+ 'foreign_db' => 'mysql',
+ 'foreign_table' => 'help_keyword',
+ 'foreign_field' => 'help_keyword_id',
+ ],
+ ],
+ 'help_topic' => [
+ 'help_category_id' => [
+ 'foreign_db' => 'mysql',
+ 'foreign_table' => 'help_category',
+ 'foreign_field' => 'help_category_id',
+ ],
+ ],
+ 'innodb_index_stats' => [
+ 'database_name' => [
+ 'foreign_db' => 'information_schema',
+ 'foreign_table' => 'SCHEMATA',
+ 'foreign_field' => 'SCHEMA_NAME',
+ ],
+ ],
+ 'innodb_table_stats' => [
+ 'database_name' => [
+ 'foreign_db' => 'information_schema',
+ 'foreign_table' => 'SCHEMATA',
+ 'foreign_field' => 'SCHEMA_NAME',
+ ],
+ ],
+ 'proc' => [
+ 'db' => [
+ 'foreign_db' => 'information_schema',
+ 'foreign_table' => 'SCHEMATA',
+ 'foreign_field' => 'SCHEMA_NAME',
+ ],
+ 'character_set_client' => [
+ 'foreign_db' => 'information_schema',
+ 'foreign_table' => 'CHARACTER_SETS',
+ 'foreign_field' => 'CHARACTER_SET_NAME',
+ ],
+ 'collation_connection' => [
+ 'foreign_db' => 'information_schema',
+ 'foreign_table' => 'COLLATIONS',
+ 'foreign_field' => 'COLLATION_NAME',
+ ],
+ 'db_collation' => [
+ 'foreign_db' => 'information_schema',
+ 'foreign_table' => 'COLLATIONS',
+ 'foreign_field' => 'COLLATION_NAME',
+ ],
+ ],
+ 'proc_priv' => [
+ 'Db' => [
+ 'foreign_db' => 'information_schema',
+ 'foreign_table' => 'SCHEMATA',
+ 'foreign_field' => 'SCHEMA_NAME',
+ ],
+ ],
+ 'servers' => [
+ 'Db' => [
+ 'foreign_db' => 'information_schema',
+ 'foreign_table' => 'SCHEMATA',
+ 'foreign_field' => 'SCHEMA_NAME',
+ ],
+ ],
+ 'slow_log' => [
+ 'db' => [
+ 'foreign_db' => 'information_schema',
+ 'foreign_table' => 'SCHEMATA',
+ 'foreign_field' => 'SCHEMA_NAME',
+ ],
+ ],
+ 'tables_priv' => [
+ 'Db' => [
+ 'foreign_db' => 'information_schema',
+ 'foreign_table' => 'SCHEMATA',
+ 'foreign_field' => 'SCHEMA_NAME',
+ ],
+ ],
+ 'time_zone_name' => [
+ 'Time_zone_id' => [
+ 'foreign_db' => 'mysql',
+ 'foreign_table' => 'time_zone',
+ 'foreign_field' => 'Time_zone_id',
+ ],
+ ],
+ 'time_zone_transition' => [
+ 'Time_zone_id' => [
+ 'foreign_db' => 'mysql',
+ 'foreign_table' => 'time_zone',
+ 'foreign_field' => 'Time_zone_id',
+ ],
+ 'Transition_time' => [
+ 'foreign_db' => 'mysql',
+ 'foreign_table' => 'time_zone_leap_second',
+ 'foreign_field' => 'Transition_time',
+ ],
+ ],
+ 'time_zone_transition_type' => [
+ 'Time_zone_id' => [
+ 'foreign_db' => 'mysql',
+ 'foreign_table' => 'time_zone',
+ 'foreign_field' => 'Time_zone_id',
+ ],
+ ],
+ ];
+
+ /**
+ * @return array
+ */
+ public static function getInformationSchema(): array
+ {
+ return self::$informationSchema;
+ }
+
+ /**
+ * @return array
+ */
+ public static function getMySql(): array
+ {
+ return self::$mysql;
+ }
+}