* Add native property types Includes TypeHints.UnionTypeHintFormat Signed-off-by: Kamil Tekiela <tekiela246@gmail.com> * Set some default values for properties Signed-off-by: Kamil Tekiela <tekiela246@gmail.com> * Format and promote properties Signed-off-by: Kamil Tekiela <tekiela246@gmail.com> * Remove redundant asserts Signed-off-by: Kamil Tekiela <tekiela246@gmail.com> * Redundant cast Signed-off-by: Kamil Tekiela <tekiela246@gmail.com> * $tmanager->theme is never null Signed-off-by: Kamil Tekiela <tekiela246@gmail.com> * Redundant variable Signed-off-by: Kamil Tekiela <tekiela246@gmail.com> * Fix empty on $statementInfo bool Signed-off-by: Kamil Tekiela <tekiela246@gmail.com> * Redundant casts Signed-off-by: Kamil Tekiela <tekiela246@gmail.com> * Redundant issets Signed-off-by: Kamil Tekiela <tekiela246@gmail.com> * getPacked() returns nullable string Signed-off-by: Kamil Tekiela <tekiela246@gmail.com> * Redundant if Signed-off-by: Kamil Tekiela <tekiela246@gmail.com> * $this->content can be null Signed-off-by: Kamil Tekiela <tekiela246@gmail.com> * Simplify ThemeManager::getInstance() Signed-off-by: Kamil Tekiela <tekiela246@gmail.com> * Use isset for checking if property is initialized Signed-off-by: Kamil Tekiela <tekiela246@gmail.com> * Use nullable instead of uninitialized property Signed-off-by: Kamil Tekiela <tekiela246@gmail.com> * password is no longer nullable I can't verify that none of the globals ever tried to set it to null, but the variable should never be nullable. Signed-off-by: Kamil Tekiela <tekiela246@gmail.com> * Update baselines Signed-off-by: Kamil Tekiela <tekiela246@gmail.com> * $same_wide_width param can be float or int Signed-off-by: Kamil Tekiela <tekiela246@gmail.com> * Update Message.php Signed-off-by: Kamil Tekiela <tekiela246@gmail.com> * Cast Sub_part to int Signed-off-by: Kamil Tekiela <tekiela246@gmail.com> * Fix one line doc comments Signed-off-by: Kamil Tekiela <tekiela246@gmail.com> --------- Signed-off-by: Kamil Tekiela <tekiela246@gmail.com>
496 lines
17 KiB
PHP
496 lines
17 KiB
PHP
<?php
|
|
/**
|
|
* Internal relations for information schema and mysql databases.
|
|
*/
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace PhpMyAdmin;
|
|
|
|
/**
|
|
* Internal relations for information schema and mysql databases.
|
|
*/
|
|
class InternalRelations
|
|
{
|
|
/** @var array */
|
|
private static array $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 array $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;
|
|
}
|
|
}
|