MySQL 8.0.39
Source Code Documentation
dd::info_schema Namespace Reference

Classes

class  Select_lex_builder
 This class provide framework to build a Query_block using ParseTree nodes. More...
 
class  Table_statistics
 The class hold dynamic table statistics for a table. More...
 
class  Tablespace_statistics
 The class hold dynamic table statistics for a table. More...
 

Enumerations

enum class  enum_table_stats_type {
  TABLE_ROWS , TABLE_AVG_ROW_LENGTH , DATA_LENGTH , MAX_DATA_LENGTH ,
  INDEX_LENGTH , DATA_FREE , AUTO_INCREMENT , CHECKSUM ,
  TABLE_UPDATE_TIME , CHECK_TIME , INDEX_COLUMN_CARDINALITY
}
 
enum class  enum_tablespace_stats_type {
  TS_ID , TS_TYPE , TS_LOGFILE_GROUP_NAME , TS_LOGFILE_GROUP_NUMBER ,
  TS_FREE_EXTENTS , TS_TOTAL_EXTENTS , TS_EXTENT_SIZE , TS_INITIAL_SIZE ,
  TS_MAXIMUM_SIZE , TS_AUTOEXTEND_SIZE , TS_VERSION , TS_ROW_FORMAT ,
  TS_DATA_FREE , TS_STATUS , TS_EXTRA
}
 

Functions

bool create_system_views (THD *thd)
 Create INFORMATION_SCHEMA system views. More...
 
bool store_server_I_S_metadata (THD *thd)
 Store the server I_S table metadata into dictionary, once during MySQL server bootstrap. More...
 
bool update_I_S_metadata (THD *thd)
 Store I_S table metadata into dictionary, during MySQL server startup. More...
 
bool store_dynamic_plugin_I_S_metadata (THD *thd, st_plugin_int *plugin_int)
 Store dynamic I_S plugin table metadata into dictionary, during INSTALL command execution. More...
 
bool remove_I_S_view_metadata (THD *thd, const dd::String_type &view_name)
 Remove I_S view metadata from dictionary. More...
 
bool initialize (THD *thd)
 Initialize INFORMATION_SCHEMA system views. More...
 
bool init_non_dd_based_system_view (THD *thd)
 Initialize non DD based INFORMATION_SCHEMA system views. More...
 
bool get_I_S_view_definition (const dd::String_type &schema_name, const dd::String_type &view_name, dd::String_type *definition)
 Get create view definition for the given I_S system view. More...
 
Query_blockbuild_show_character_set_query (const POS &pos, THD *thd, const String *wild, Item *where_cond)
 Build a substitute query for SHOW CHARSETS. More...
 
Query_blockbuild_show_collation_query (const POS &pos, THD *thd, const String *wild, Item *where_cond)
 Build a substitute query for SHOW COLLATION. More...
 
Query_blockbuild_show_databases_query (const POS &pos, THD *thd, String *wild, Item *where_cond)
 Build a substitute query for SHOW DATABASES. More...
 
static bool add_table_status_fields (Select_lex_builder *query, bool alias_as_alias)
 Add fields required by SHOW TABLE STATUS. More...
 
Query_blockbuild_show_tables_query (const POS &pos, THD *thd, String *wild, Item *where_cond, bool include_status_fields)
 Build a substitute query for SHOW TABLES / TABLE STATUS. More...
 
Query_blockbuild_show_columns_query (const POS &pos, THD *thd, Table_ident *table_ident, const String *wild, Item *where_cond)
 Build a substitute query for SHOW COLUMNS/FIELDS OR DESCRIBE. More...
 
Query_blockbuild_show_keys_query (const POS &pos, THD *thd, Table_ident *table_ident, Item *where_cond)
 Build a substitute query for SHOW INDEX|KEYS|INDEXES. More...
 
Query_blockbuild_show_triggers_query (const POS &pos, THD *thd, String *wild, Item *where_cond)
 Build a substitute query for SHOW TRIGGERS. More...
 
Query_blockbuild_show_procedures_query (const POS &pos, THD *thd, String *wild, Item *where_cond)
 Build a substitute query for SHOW PROCEDURE/FUNCTION STATUS. More...
 
Query_blockbuild_show_events_query (const POS &pos, THD *thd, String *wild, Item *where_cond)
 Build a substitute query for SHOW EVENTS. More...
 
bool update_table_stats (THD *thd, Table_ref *table)
 Get dynamic table statistics of a table and store them into mysql.table_stats. More...
 
bool update_index_stats (THD *thd, Table_ref *table)
 Get dynamic index statistics of a table and store them into mysql.index_stats. More...
 
bool convert_table_name_case (char *db, char *table_name)
 If the db is 'information_schema' then convert 'db' to lowercase and 'table_name' to upper case. More...
 

Variables

static const uint IS_DD_VERSION = 80030
 The version of the current information_schema system views. More...
 
static const Query_options options
 

Enumeration Type Documentation

◆ enum_table_stats_type

Enumerator
TABLE_ROWS 
TABLE_AVG_ROW_LENGTH 
DATA_LENGTH 
MAX_DATA_LENGTH 
INDEX_LENGTH 
DATA_FREE 
AUTO_INCREMENT 
CHECKSUM 
TABLE_UPDATE_TIME 
CHECK_TIME 
INDEX_COLUMN_CARDINALITY 

◆ enum_tablespace_stats_type

Enumerator
TS_ID 
TS_TYPE 
TS_LOGFILE_GROUP_NAME 
TS_LOGFILE_GROUP_NUMBER 
TS_FREE_EXTENTS 
TS_TOTAL_EXTENTS 
TS_EXTENT_SIZE 
TS_INITIAL_SIZE 
TS_MAXIMUM_SIZE 
TS_AUTOEXTEND_SIZE 
TS_VERSION 
TS_ROW_FORMAT 
TS_DATA_FREE 
TS_STATUS 
TS_EXTRA 

Function Documentation

◆ add_table_status_fields()

static bool dd::info_schema::add_table_status_fields ( Select_lex_builder query,
bool  alias_as_alias 
)
static

Add fields required by SHOW TABLE STATUS.

Parameters
query- Select_lex_builder to which we add fields.
alias_as_alias- Add select items of the form, 'alias AS alias'. This is required for top level query, as the real field names would be valid only the subquery that we are building for SHOW TABLE STATUS. Check comments in sql/dd/show.h for more details.
Returns
false on success. true on failure.

◆ build_show_character_set_query()

Query_block * dd::info_schema::build_show_character_set_query ( const POS pos,
THD thd,
const String wild,
Item where_cond 
)

Build a substitute query for SHOW CHARSETS.

For command like,

SHOW CHARACTER SET [ LIKE 'pattern' | WHERE expr ]
@ WHERE
Definition: sql_yacc.h:679
@ LIKE
Definition: sql_yacc.h:320
@ SHOW
Definition: sql_yacc.h:550

We build following,

(SELECT CHARACTER_SET_NAME as `Charset`,
DESCRIPTION as `Description`,
DEFAULT_COLLATE_NAME as `Default collation`,
MAXLEN as `Maxlen`
FROM information_schema.character_sets) character_sets
[ WHERE Charset LIKE "<value>" | WHERE @<where_clause@> ]
Definition: charset.h:46
const char * collation
Definition: audit_api_message_emit.cc:184
const std::string SELECT("SELECT")
Name of the static privileges.
@ FROM
Definition: sql_yacc.h:242
@ BY
Definition: sql_yacc.h:93
Definition: table.h:282
Parameters
pos- YYLTYPE position of parsing context.
thd- Current thread.
wild- The value of LIKE clause.
where_cond- <where_clause> clause provided by user.
Returns
pointer to Query_block on success, NULL otherwise.

◆ build_show_collation_query()

Query_block * dd::info_schema::build_show_collation_query ( const POS pos,
THD thd,
const String wild,
Item where_cond 
)

Build a substitute query for SHOW COLLATION.

For command like,

SHOW COLLATION [ LIKE 'pattern' | WHERE expr ]

We build following,

(SELECT COLLATION_NAME as `Collation`,
CHARACTER_SET_NAME as `Charset`,
ID as `Id`,
IS_COMPILED as `Compiled`,
SORTLEN as `Sortlen`,
PAD_ATTRIBUTE as `Pad_attribute`,
FROM information_schema.collations) collations
[ WHERE Collation LIKE "<value>" | WHERE @<where_clause@> ]
Definition: collation.h:46
Pad_attribute
Definition: m_ctype.h:198
Parameters
pos- YYLTYPE position of parsing context.
thd- Current thread.
wild- The value of LIKE clause.
where_cond- <where_clause> clause provided by user.
Returns
pointer to Query_block on success, NULL otherwise.

◆ build_show_columns_query()

Query_block * dd::info_schema::build_show_columns_query ( const POS pos,
THD thd,
Table_ident table_ident,
const String wild,
Item where_cond 
)

Build a substitute query for SHOW COLUMNS/FIELDS OR DESCRIBE.

For command like,

{FROM | IN} tbl_name
[{FROM | IN} db_name]
[LIKE 'pattern' | WHERE expr]
OR
DESCRIBE tbl_name
const char * db_name
Definition: rules_table_service.cc:55
@ COLUMNS
Definition: sql_yacc.h:118
@ DESCRIBE
Definition: sql_yacc.h:177
@ FULL
Definition: sql_yacc.h:243

We build following,

Collation, <-- only with 'FULL'
Key,
Default,
Extra,
Privileges, <-- only with 'FULL'
Comment <-- only with 'FULL'
(SELECT TABLE_SCHEMA AS Database,
TABLE_NAME AS Table,
COLUMN_NAME AS Field,
COLUMN_TYPE AS Type,
COLLATION_NAME AS Collation, <-- only with 'FULL'
IS_NULLABLE AS Null,
COLUMN_KEY AS Key,
COLUMN_DEFAULT AS Default,
EXTRA AS Extra,
PRIVILEGES AS Privileges, <-- only with 'FULL'
COLUMN_COMMENT AS Comment, <-- only with 'FULL'
ORDINAL_POSITION AS Oridinal_position
FROM information_schema.columns) columns
WHERE Database == '<value>' <-- Default DB or db_name
AND
Table == 'value' <-- tbl_name
AND
[ Field LIKE "<value>" | @<where_clause@> ]
ORDER BY `Ordinal_position`;
Definition: field.h:575
Definition: table.h:47
borrowable::binary::Null Null
Definition: classic_protocol_binary.h:337
borrowable::session_track::Field< true > Field
Definition: classic_protocol_session_track.h:272
const std::string Database("Database")
const std::string Privileges("Privileges")
std::string_view Key
The key type for the hash structure in HashJoinRowBuffer.
Definition: hash_join_buffer.h:102
Type
Definition: resource_group_basic_types.h:33
@ AS
Definition: sql_yacc.h:66
@ PRIVILEGES
Definition: sql_yacc.h:463
@ EXTRA
Definition: system_variable_source_type.h:38

Note that the thd->lex->verbose == true would mean user has provide keyword 'FULL'.

Parameters
pos- YYLTYPE position of parsing context.
thd- Current thread.
table_ident- Database and Table name of table being used.
wild- The value of LIKE clause.
where_cond- <where_clause> clause provided by user.
Returns
pointer to Query_block on success, NULL otherwise.

◆ build_show_databases_query()

Query_block * dd::info_schema::build_show_databases_query ( const POS pos,
THD thd,
String wild,
Item where_cond 
)

Build a substitute query for SHOW DATABASES.

For command like,

SHOW DATABASES [ LIKE 'pattern' | WHERE expr ]
@ DATABASES
Definition: sql_yacc.h:154

We build following,

(SELECT SCHEMA_NAME as `Database`,
FROM information_schema.schemata) schemata
[ WHERE Database LIKE "<value>" | WHERE @<where_clause@> ]
Parameters
pos- YYLTYPE position of parsing context.
thd- Current thread.
wild- The value of LIKE clause.
where_cond- <where_clause> clause provided by user.
Returns
pointer to Query_block on success, NULL otherwise.

◆ build_show_events_query()

Query_block * dd::info_schema::build_show_events_query ( const POS pos,
THD thd,
String wild,
Item where_cond 
)

Build a substitute query for SHOW EVENTS.

For command like,

SHOW EVENTS [{FROM | IN} schema_name]
[LIKE 'pattern' | WHERE expr]

We build following,

Db,
Name,
Definer,
Time zone,
Execute at,
Interval value,
Interval field,
Starts,
Ends,
Status,
Originator,
character_set_client,
collation_connection,
Database_collation AS Database Collation
EVENT_SCHEMA AS `Db`,
EVENT_NAME AS `Name`,
DEFINER AS `Definer`,
TIME_ZONE AS `Time zone`,
EVENT_TYPE AS `Type`,
EXECUTE_AT AS `Execute at`,
INTERVAL_VALUE AS `Interval value`,
INTERVAL_FIELD AS `Interval field`,
STARTS AS `Starts`,
ENDS AS `Ends`,
STATUS AS `Status`,
ORIGINATOR AS `Originator`,
CHARACTER_SET_CLIENT AS `character_set_client`,
COLLATION_CONNECTION AS `collation_connection`,
DATABASE_COLLATION AS `Database Collation`
FROM information_schema.events) as events
WHERE Db == '<value>' <-- Default DB or IN clause
AND
[ Name LIKE "<value>" | @<where_clause@> ]
ORDER BY `Db`, `Name`;
@ DEFINER
use permissions of the user who defined the VIEW
Definition: mysqlx_crud.proto:355
Struct representing a duration.
Definition: my_time.h:228
Definition: mysql.cc:140
Parameters
pos- YYLTYPE position of parsing context.
thd- Current thread.
wild- The value of LIKE clause.
where_cond- <where_clause> clause provided by user.
Returns
pointer to Query_block on success, NULL otherwise.

◆ build_show_keys_query()

Query_block * dd::info_schema::build_show_keys_query ( const POS pos,
THD thd,
Table_ident table_ident,
Item where_cond 
)

Build a substitute query for SHOW INDEX|KEYS|INDEXES.

For command like,

{FROM | IN} tbl_name
[{FROM | IN} db_name]
[WHERE expr]
const std::string INDEX("INDEX")
@ INDEXES
Definition: sql_yacc.h:279
@ KEYS
Definition: sql_yacc.h:306

We build following,

Non_unique,
Seq_in_index,
Column_name,
Cardinality,
Sub_part,
Packed,
Index_type,
Comment,
Index_comment,
Visible
Non_unique,
Seq_in_index,
Column_name,
Cardinality,
Sub_part,
Packed,
Index_type,
Comment,
Index_comment,
Visible,
INDEX_ORDINAL_POSITION,
COLUMN_ORDINAL_POSITION
FROM information_schema.show_statistics) statistics
WHERE Database == '<value>' <-- Default DB or db_name
AND
Table == 'value' <-- tbl_name
AND
[ @<where_clause@> ]
ORDER BY INDEX_ORDINAL_POSITION, COLUMN_ORDINAL_POSITION
Definition of name for generated keys, owned by TABLE_SHARE.
Definition: table.h:681
Parameters
pos- YYLTYPE position of parsing context.
thd- Current thread.
table_ident- Database and Table name of table being used.
where_cond- <where_clause> clause provided by user.
Returns
pointer to Query_block on success, NULL otherwise.

◆ build_show_procedures_query()

Query_block * dd::info_schema::build_show_procedures_query ( const POS pos,
THD thd,
String wild,
Item where_cond 
)

Build a substitute query for SHOW PROCEDURE/FUNCTION STATUS.

For command like,

We build following,

Db,
Name,
Definer,
Modified,
Security_type,
Comment,
character_set_client,
collation_connection,
Database_collation AS `Database Collation`
ROUTINE_SCHEMA AS `Db`,
ROUTINE_NAME AS `Name`,
ROUTINE_TYPE AS `Type`,
DEFINER AS `Definer`,
LAST_ALTERED AS `Modified`,
CREATED AS `Created`,
SECURITY_TYPE AS `Security_type`,
ROUTINE_COMMENT AS `Comment`,
CHARACTER_SET_CLIENT AS `character_set_client,
COLLATION_CONNECTION AS `collation_connection,
DATABASE_COLLATION AS `Database Collation`
FROM information_schema.routines) routines
WHERE Db == '<value>' <-- Default DB or IN clause
AND
[ Name LIKE "<value>" | @<where_clause@> ]
ORDER BY `Db`, `Name`;
constexpr key_type Created
Definition: http_request.h:58
Parameters
pos- YYLTYPE position of parsing context.
thd- Current thread.
wild- The value of LIKE clause.
where_cond- <where_clause> clause provided by user.
Returns
pointer to Query_block on success, NULL otherwise.

◆ build_show_tables_query()

Query_block * dd::info_schema::build_show_tables_query ( const POS pos,
THD thd,
String wild,
Item where_cond,
bool  include_status_fields 
)

Build a substitute query for SHOW TABLES / TABLE STATUS.

For command like,

[LIKE 'pattern' | WHERE expr]
OR
[LIKE 'pattern' | WHERE expr]
#define TABLES
Definition: sql_yacc.h:1410
Definition: table.h:1399

We build following,

`Table_type`, <-- only with 'FULL'
// For SHOW TABLE STATUS
`Engine`,
`Row_format`,
`Rows`,
`Avg_row_length`,
`Data_length`,
`Max_data_length`,
`Index_length`,
`Data_free`,
`Auto_increment`,
`Create_time`,
`Update_time`,
`Check_time`,
`Checksum`,
`Create_options`,
`Comment`
(SELECT TABLE_SCHEMA AS `Database`,
TABLE_NAME as `Table`,
TABLE_TYPE AS `Table_type`, <-- only with 'FULL'
// For SHOW TABLE STATUS
ENGINE AS `Engine`,
ROW_FORMAT AS `Row_format`,
TABLE_ROWS AS `Rows`,
AVG_ROW_LENGTH AS `Avg_row_length`,
DATA_LENGTH AS `Data_length`,
MAX_DATA_LENGTH AS `Max_data_length`,
INDEX_LENGTH AS `Index_length`,
DATA_FREE AS `Data_free`,
AUTO_INCREMENT AS `Auto_increment`,
CREATE_TIME AS `Create_time`,
UPDATE_TIME AS `Update_time`,
CHECK_TIME AS `Check_time`,
TABLE_COLLATION AS `Collation`,
CHECKSUM AS `Checksum`,
CREATE_OPTIONS AS `Create_options`,
TABLE_COMMENT AS `Comment`
FROM information_schema.tables) tables
WHERE Database == '<value>' <-- Default DB or IN clause
AND
[ Table LIKE "<value>" | @<where_clause@> ]
Class representing a version.
Definition: designator.h:45
#define VERSION
Definition: config.h:306
#define UPDATE_TIME
Definition: myisamdef.h:706
@ AVG_ROW_LENGTH
Definition: sql_yacc.h:73

Note that the thd->lex->verbose == true would mean user has provide keyword 'FULL'.

Parameters
pos- YYLTYPE position of parsing context.
thd- Current thread.
wild- The value of LIKE clause.
where_cond- <where_clause> clause provided by user.
include_status_fields- If we are handling SHOW TABLE STATUS
Returns
pointer to Query_block on success, NULL otherwise.

◆ build_show_triggers_query()

Query_block * dd::info_schema::build_show_triggers_query ( const POS pos,
THD thd,
String wild,
Item where_cond 
)

Build a substitute query for SHOW TRIGGERS.

For command like,

SHOW TRIGGERS [{FROM | IN} db_name]
[LIKE 'pattern' | WHERE expr]

We build following,

Statement,
Timing,
Definer,
character_set_client,
collation_connection,
Database_collation AS `Database Collation`
EVENT_OBJECT_SCHEMA AS `Database`
TRIGGER_NAME AS `Trigger`,
EVENT_MANIPULATION AS `Event`,
EVENT_OBJECT_TABLE AS `Table`,
ACTION_STATEMENT AS `Statement`,
ACTION_TIMING AS `Timing`,
CREATED AS `Created`,
SQL_MODE AS `sql_mode`,
DEFINER AS `Definer`,
CHARACTER_SET_CLIENT AS `character_set_client`,
COLLATION_CONNECTION AS `collation_connection`,
DATABASE_COLLATION AS `Database_collation`,
ACTION_ORDER AS `action_order`
FROM information_schema.triggers) triggers
WHERE Database == '<value>' <-- Default DB or IN clause
AND
[ Table LIKE "<value>" | @<where_clause@> ]
ORDER BY `Table`, `Event`, `Timing`, `action_order`;
Definition: event.h:48
Class representing a Trigger in DD framework.
Definition: trigger.h:54
static const char * sql_mode
Definition: mysqlslap.cc:197
Parameters
pos- YYLTYPE position of parsing context.
thd- Current thread.
wild- The value of LIKE clause.
where_cond- <where_clause> clause provided by user.
Returns
pointer to Query_block on success, NULL otherwise.

◆ convert_table_name_case()

bool dd::info_schema::convert_table_name_case ( char *  db,
char *  table_name 
)

If the db is 'information_schema' then convert 'db' to lowercase and 'table_name' to upper case.

Mainly because all information schema tables are stored in upper case in server.

Parameters
dbDatabase name
table_nameTable name.
Returns
true if the conversion was done. false if not.

◆ create_system_views()

bool dd::info_schema::create_system_views ( THD thd)

Create INFORMATION_SCHEMA system views.

Parameters
thdThread context.
Returns
Upon failure, return true, otherwise false.

◆ get_I_S_view_definition()

bool dd::info_schema::get_I_S_view_definition ( const dd::String_type schema_name,
const dd::String_type view_name,
dd::String_type definition 
)

Get create view definition for the given I_S system view.

Parameters
schema_nameSchema name.
view_nameI_S view name.
definition[out] The CREATE VIEW command to create system view. A pointer to a preallocated string should be supplied.
Returns
Upon failure, return true, otherwise false.

◆ init_non_dd_based_system_view()

bool dd::info_schema::init_non_dd_based_system_view ( THD thd)

Initialize non DD based INFORMATION_SCHEMA system views.

Parameters
thdThread context.
Returns
Upon failure, return true, otherwise false.

◆ initialize()

bool dd::info_schema::initialize ( THD thd)

Initialize INFORMATION_SCHEMA system views.

Parameters
thdThread context.
Returns
Upon failure, return true, otherwise false.

◆ remove_I_S_view_metadata()

bool dd::info_schema::remove_I_S_view_metadata ( THD thd,
const dd::String_type view_name 
)

Remove I_S view metadata from dictionary.

This is used UNINSTALL and server restart procedure when I_S version is changed.

Parameters
thdThread context.
view_nameI_S view name of which the metadata is to be stored.
Returns
Upon failure, return true, otherwise false.

◆ store_dynamic_plugin_I_S_metadata()

bool dd::info_schema::store_dynamic_plugin_I_S_metadata ( THD thd,
st_plugin_int plugin_int 
)

Store dynamic I_S plugin table metadata into dictionary, during INSTALL command execution.

Parameters
thdThread context.
plugin_intI_S Plugin of which the metadata is to be stored.
Returns
Upon failure, return true, otherwise false.

◆ store_server_I_S_metadata()

bool dd::info_schema::store_server_I_S_metadata ( THD thd)

Store the server I_S table metadata into dictionary, once during MySQL server bootstrap.

Parameters
thdThread context.
Returns
Upon failure, return true, otherwise false.

◆ update_I_S_metadata()

bool dd::info_schema::update_I_S_metadata ( THD thd)

Store I_S table metadata into dictionary, during MySQL server startup.

Parameters
thdThread context.
Returns
Upon failure, return true, otherwise false.

◆ update_index_stats()

bool dd::info_schema::update_index_stats ( THD thd,
Table_ref table 
)

Get dynamic index statistics of a table and store them into mysql.index_stats.

Parameters
thdThread.
tableTable_ref pointing to table info.
Returns
false on success. true on failure.

◆ update_table_stats()

bool dd::info_schema::update_table_stats ( THD thd,
Table_ref table 
)

Get dynamic table statistics of a table and store them into mysql.table_stats.

Parameters
thdThread.
tableTable_ref pointing to table info.
Returns
false on success. true on failure.

Variable Documentation

◆ IS_DD_VERSION

const uint dd::info_schema::IS_DD_VERSION = 80030
static

The version of the current information_schema system views.

This version number is stored on disk in the data dictionary. Every time the information_schema structure changes, this version number must change.

The numbering to use is the MySQL version number of the first MySQL version that published a given database schema. The format is Mmmdd with M=Major, m=minor, d=dot, so that MySQL 8.0.4 is encoded as 80004.

Historical I_S version number published:

1: Published in 8.0.3-RC.

Introduced in MySQL 8.0.0 by WL#6599. Never published in a GA version.

80011: Published in 8.0 GA.

Changes from version 1:

  • Bug#27309116: Add a new column external_language to mysql.routines and update information_schema.routines to reflect this column.
  • Bug#27593348: INFORMATION_SCHEMA.STATISTICS FIELD TYPE CHANGE. Changes the column I_S.STATISTICS.NON_UNIQUE type from VARCHAR to INT.

80012: Published in 8.0.12

Changes from version 80011:

  • Bug#27945704 UNABLE TO JOIN TABLE_CONSTRAINTS AND REFERENTIAL_CONSTRAINTS Changes the collation of I_S columns that project index name and constraint name to use utf8_tolower_ci.
  • WL#11864 Implement I_S.VIEW_TABLE_USAGE and I_S.VIEW_ROUTINE_USAGE
  • WL#1075 adds one column to INFORMATION_SCHEMA.STATISTICS: "EXPRESSION". This column prints out the expression for functional key parts, or SQL NULL if it is a regular key part. For functional key parts, COLUMN_NAME is set to SQL NULL.

80013: Published in 8.0.13

Changes from version 80012

  • WL#11000 ST_Distance with units Adds a new view information_schema.st_units_of_measure with columns UNIT_NAME, CONVERSION_FACTOR, DESCRIPTION, and UNIT_TYPE. This view contains the supported spatial units.

80014: Published in 8.0.14

There are no changes from version 80013. Hence server version 80014 used I_S version 80013.

80015: Not published.

There are no changes from version 80014. Hence server version 80015 used I_S version 80013.

80016: Published in 8.0.16

Changes from version 80015.

  • WL#929 - CHECK CONSTRAINTS New INFORMATION_SCHEMA table CHECK_CONSTRAINTS is introduced and INFORMATION_SCHEMA.TABLE_CONSTRAINTS is modified to include check constraints defined on the table.
  • WL#12261 Control (enforce and disable) table encryption
    • Add new column information_schema.schemata.default_encryption
    • information_schema.tables.options UDF definition is changed to pass schema default encryption.

80017: Published in 8.0.17

Changes from version 80016:

  • WL#12984 INFORMATION_SCHEMA and metadata related to secondary engine. Changes system view definitions of INFORMATION_SCHEMA.TABLES.CREATE_OPTIONS and INFORMATION_SCHEMA.COLUMNS.EXTRA.
  • Bug#29406053: OPTIMIZER_SWITCH DERIVED_MERGE=OFF CAUSES TABLE COMMENTS "... IS NOT BASE TABLE" Modifies the INFORMATION_SCHEMA.TABLES dynamic column definitions to return NULL, if it finds a view.

80018: Published in 8.0.18

Changes from version 80017:

  • Bug#28278220: wrong column type , view , binary Changes type of following I_S table column's KEY_COLUMN_USAGE: CONSTRAINT_NAME, POSITION_IN_UNIQUE_CONSTRAINT, REFERENCED_TABLE_SCHEMA, FIELD_REFERENCED_TABLE_NAME, REFERENCED_COLUMN_NAME

    TABLE_CONSTRAINTS: CONSTRAINT_NAME. Column metadata of views on these system views or tables created using CREATE TABLE SELECT from these system views will not be similar to one created with previous version of system views.

  • Bug#29870919: INFORMATION SCHEMA STATS EXPIRY RESULTS IN BAD STATS FOR PARTITIONED TABLES This bug changes definition of I_S.STATISTICS.

80019: Not published (see below)

Changes from version 80018:

  • WL#10895 INFORMATION_SCHEMA views for Roles. Adds new system view definitions for roles. INFORMATION_SCHEMA.APPLICABLE_ROLES; INFORMATION_SCHEMA.ADMINISTRABLE_ROLE_AUTHORIZATIONS; INFORMATION_SCHEMA.ENABLED_ROLES; INFORMATION_SCHEMA.ROLE_TABLE_GRANTS; INFORMATION_SCHEMA.ROLE_COLUMN_GRANTS; INFORMATION_SCHEMA.ROLE_ROUTINE_GRANTS;

80020: Published by mistake in server version 8.0.19. To correct this, we set the IS version number to 800201 in mysql server version 8.0.20.

Then, in server version 8.0.21, we're back on track with IS_version 80021.

Changes from version 80018:

  • Bug#29871530: MYSQL 8.0 INFORMATION_SCHEMA.EVENTS NOT OBSERVING CUSTOM TIMEZONE This bug updates LAST_EXECUTED to include time zones in I_S.EVENTS.

800201: Published in 8.0.20

Changes from version 80020:

  • Bug#30263373: INCORRECT OUTPUT FROM TABLE_FUNCTION_JSON::PRINT() This bug updates the character set of columns returned from JSON_TABLE expressions in INFORMATION_SCHEMA views.

80021: Published in 8.0.21

Changes from version 800201:

  • WL#13562 CREATE/ALTER USER COMMENT 'JSON'
  • WL#13341: Store options for secondary engines.
  • Bug#30766181 and Bug#30216864 updates I_S.KEY_COLUMN_USAGE and I_S.TABLE_CONSTRAINTS views.

80022: Published in 8.0.22

Changes from version 80021:

  • WL#13369: Added new I_S view 'SCHEMATA_EXTENSIONS'.
  • Bug #31427410: Added a WHERE clause to I_S.USER_ATTRIBUTES

80023: Published in 8.0.23

Changes from version 80022:

  • WL#12819: Affects size of I_S.KEYWORDS.WORD column length. Following bug was raised for the same. Bug#31982157 THE KEYWORD LEN IN I_S GETS UPDATED WHEN A KEYWORD > EXISTING MAX LEN IS ADDED
  • WL#10905: INFORMATION_SCHEMA.COLUMNS table is modified to list "INVISIBLE" value in EXTRA column for INVISIBLE columns.

80024..80028: Not published.

There are no changes from version 80023. Hence server versions 80024..80028 uses I_S version 80023.

80029: Published in 8.0.29

Changes from version 80023:

  • Bug#33781534: INFORMATION_SCHEMA.KEY_COLUMN_USAGE table is modified to list invisible columns with key constraints.

80030: Current.

Changes from version 80029:

  • Bug #33787300 Rename utf8_xxx collations to utf8mb3_xxx
  • WL#13784: Following INFORMATION_SCHEMA tables are modified to skip listing generated invisible primary key and key column when system variable show_gipk_in_create_table_and_information_schema = OFF, INFORMATION_SCHEMA.COLUMNS INFORMATION_SCHEMA.COLUMNS_EXTENSIONS INFORMATION_SCHEMA.KEY_COLUMN_USAGE INFORMATION_SCHEMA.STATISTICS INFORMATION_SCHEMA.TABLE_CONSTRAINTS INFORMATION_SCHEMA.TABLE_CONSTRAINTS_EXTENSIONS

80031: Next IS version number after the previous is public.

Changes from version 80030:

◆ options

const Query_options dd::info_schema::options
static
Initial value:
= {
}
#define OPTION_SELECT_FOR_SHOW
Definition: query_options.h:122