You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

45 lines
4.0 KiB

create view information_schema.STATISTICS as
select (`cat`.`name` collate utf8mb3_tolower_ci) AS `TABLE_CATALOG`,
(`sch`.`name` collate utf8mb3_tolower_ci) AS `TABLE_SCHEMA`,
(`tbl`.`name` collate utf8mb3_tolower_ci) AS `TABLE_NAME`,
if(((`idx`.`type` = 'PRIMARY') or (`idx`.`type` = 'UNIQUE')), 0, 1) AS `NON_UNIQUE`,
(`sch`.`name` collate utf8mb3_tolower_ci) AS `INDEX_SCHEMA`,
(`idx`.`name` collate utf8mb3_tolower_ci) AS `INDEX_NAME`,
`icu`.`ordinal_position` AS `SEQ_IN_INDEX`,
if((`col`.`hidden` = 'SQL'), NULL,
(`col`.`name` collate utf8mb3_tolower_ci)) AS `COLUMN_NAME`,
(case when (`icu`.`order` = 'DESC') then 'D' when (`icu`.`order` = 'ASC') then 'A' else NULL end) AS `COLLATION`,
internal_index_column_cardinality(`sch`.`name`, `tbl`.`name`, `idx`.`name`, `col`.`name`,
`idx`.`ordinal_position`, `icu`.`ordinal_position`,
if((`tbl`.`partition_type` is null), `tbl`.`engine`, ''),
`tbl`.`se_private_id`,
((`tbl`.`hidden` <> 'Visible') or (0 <> `idx`.`hidden`) or
(0 <> `icu`.`hidden`)),
coalesce(`stat`.`cardinality`, cast(-(1) as unsigned)),
coalesce(cast(`stat`.`cached_time` as unsigned), 0)) AS `CARDINALITY`,
get_dd_index_sub_part_length(`icu`.`length`, `col`.`type`, `col`.`char_length`, `col`.`collation_id`,
`idx`.`type`) AS `SUB_PART`,
NULL AS `PACKED`,
if((`col`.`is_nullable` = 1), 'YES', '') AS `NULLABLE`,
(case
when (`idx`.`type` = 'SPATIAL') then 'SPATIAL'
when (`idx`.`algorithm` = 'SE_PRIVATE') then ''
else `idx`.`algorithm` end) AS `INDEX_TYPE`,
if(((`idx`.`type` = 'PRIMARY') or (`idx`.`type` = 'UNIQUE')), '',
if(internal_keys_disabled(`tbl`.`options`), 'disabled', '')) AS `COMMENT`,
`idx`.`comment` AS `INDEX_COMMENT`,
if(`idx`.`is_visible`, 'YES', 'NO') AS `IS_VISIBLE`,
if((`col`.`hidden` = 'SQL'), `col`.`generation_expression_utf8`, NULL) AS `EXPRESSION`
from (((((((`mysql`.`index_column_usage` `icu` join `mysql`.`indexes` `idx`
on ((`idx`.`id` = `icu`.`index_id`))) join `mysql`.`tables` `tbl`
on ((`idx`.`table_id` = `tbl`.`id`))) join `mysql`.`columns` `col`
on ((`icu`.`column_id` = `col`.`id`))) join `mysql`.`schemata` `sch`
on ((`tbl`.`schema_id` = `sch`.`id`))) join `mysql`.`catalogs` `cat`
on ((`cat`.`id` = `sch`.`catalog_id`))) join `mysql`.`collations` `coll`
on ((`tbl`.`collation_id` = `coll`.`id`))) left join `mysql`.`index_stats` `stat`
on (((`tbl`.`name` = `stat`.`table_name`) and (`sch`.`name` = `stat`.`schema_name`) and
(`idx`.`name` = `stat`.`index_name`) and (`col`.`name` = `stat`.`column_name`))))
where ((0 <> can_access_table(`sch`.`name`, `tbl`.`name`)) and
(0 <> is_visible_dd_object(`tbl`.`hidden`, ((0 <> `idx`.`hidden`) or (0 <> `icu`.`hidden`)), `idx`.`options`)));