SCH_VARIABLES,
--- a/sql/mysqld.cc
+++ b/sql/mysqld.cc
-@@ -3101,6 +3101,7 @@
+@@ -2951,6 +2951,7 @@
{"show_storage_engines", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_SHOW_STORAGE_ENGINES]), SHOW_LONG_STATUS},
{"show_table_status", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_SHOW_TABLE_STATUS]), SHOW_LONG_STATUS},
{"show_tables", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_SHOW_TABLES]), SHOW_LONG_STATUS},
{"show_triggers", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_SHOW_TRIGGERS]), SHOW_LONG_STATUS},
{"show_variables", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_SHOW_VARIABLES]), SHOW_LONG_STATUS},
{"show_warnings", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_SHOW_WARNS]), SHOW_LONG_STATUS},
-@@ -7802,6 +7803,7 @@
+@@ -7670,6 +7671,7 @@
PSI_mutex_key key_LOCK_des_key_file;
#endif /* HAVE_OPENSSL */
PSI_mutex_key key_BINLOG_LOCK_index, key_BINLOG_LOCK_prep_xids,
key_delayed_insert_mutex, key_hash_filo_lock, key_LOCK_active_mi,
key_LOCK_connection_count, key_LOCK_crypt, key_LOCK_delayed_create,
-@@ -7855,6 +7857,7 @@
+@@ -7723,6 +7725,7 @@
{ &key_LOCK_system_variables_hash, "LOCK_system_variables_hash", PSI_FLAG_GLOBAL},
{ &key_LOCK_table_share, "LOCK_table_share", PSI_FLAG_GLOBAL},
{ &key_LOCK_thd_data, "THD::LOCK_thd_data", 0},
sql_command_flags[SQLCOM_SHOW_TABLE_STATUS]= (CF_STATUS_COMMAND |
CF_SHOW_TABLE_COMMAND |
CF_REEXECUTION_FRAGILE);
-@@ -1510,6 +1513,8 @@
+@@ -1520,6 +1523,8 @@
case SCH_TABLE_NAMES:
case SCH_TABLES:
case SCH_VIEWS:
case SCH_TRIGGERS:
case SCH_EVENTS:
-@@ -2083,6 +2088,7 @@
+@@ -2110,6 +2115,7 @@
}
case SQLCOM_SHOW_DATABASES:
case SQLCOM_SHOW_TABLES:
case SQLCOM_SHOW_TRIGGERS:
case SQLCOM_SHOW_TABLE_STATUS:
case SQLCOM_SHOW_OPEN_TABLES:
-@@ -4846,6 +4852,8 @@
+@@ -4919,6 +4925,8 @@
case SCH_TABLE_NAMES:
case SCH_TABLES:
case SQLCOM_SHOW_TRIGGERS:
case SQLCOM_SHOW_EVENTS:
thd->make_lex_string(&lookup_field_values->db_value,
-@@ -3279,6 +3280,231 @@
+@@ -3283,6 +3284,231 @@
return (uint) OPEN_FULL_TABLE;
}
/**
Try acquire high priority share metadata lock on a table (with
-@@ -7023,6 +7249,25 @@
+@@ -7046,6 +7272,25 @@
{0, 0, MYSQL_TYPE_STRING, 0, 0, 0, SKIP_OPEN_TABLE}
};
ST_FIELD_INFO columns_fields_info[]=
{
-@@ -7637,6 +7882,9 @@
+@@ -7660,6 +7905,9 @@
hton_fill_schema_table, 0, 0, -1, -1, 0, 0},
{"GLOBAL_STATUS", variables_fields_info, create_schema_table,
fill_status, make_old_format, 0, 0, -1, 0, 0},
{"GLOBAL_VARIABLES", variables_fields_info, create_schema_table,
fill_variables, make_old_format, 0, 0, -1, 0, 0},
{"KEY_COLUMN_USAGE", key_column_usage_fields_info, create_schema_table,
-@@ -7686,6 +7934,9 @@
+@@ -7709,6 +7957,9 @@
get_all_tables, make_table_names_old_format, 0, 1, 2, 1, 0},
{"TABLE_PRIVILEGES", table_privileges_fields_info, create_schema_table,
fill_schema_table_privileges, 0, 0, -1, -1, 0, 0},
OPEN_TRIGGER_ONLY|OPTIMIZE_I_S_TABLE},
--- a/sql/sql_yacc.yy
+++ b/sql/sql_yacc.yy
-@@ -10873,6 +10873,15 @@
+@@ -10898,6 +10898,15 @@
if (prepare_schema_table(YYTHD, lex, 0, SCH_TABLE_NAMES))
MYSQL_YYABORT;
}
LEX *lex= Lex;
--- a/sql/mysqld.h
+++ b/sql/mysqld.h
-@@ -233,6 +233,7 @@
+@@ -234,6 +234,7 @@
extern PSI_mutex_key key_LOCK_des_key_file;
#endif
key_LOCK_connection_count, key_LOCK_crypt, key_LOCK_delayed_create,
--- a/sql/sql_base.cc
+++ b/sql/sql_base.cc
-@@ -1588,12 +1588,16 @@
+@@ -1651,12 +1651,16 @@
if (!mysql_bin_log.is_open())
{
TABLE *tmp_next;
DBUG_RETURN(FALSE);
}
-@@ -1606,6 +1610,8 @@
+@@ -1669,6 +1673,8 @@
memcpy(buf, stub, stub_len);
/*
Insertion sort of temp tables by pseudo_thread_id to build ordered list
of sublists of equal pseudo_thread_id
-@@ -1727,6 +1733,8 @@
+@@ -1790,6 +1796,8 @@
thd->variables.option_bits&= ~OPTION_QUOTE_SHOW_CREATE; /* restore option */
thd->temporary_tables=0;
DBUG_RETURN(error);
}
-@@ -2104,6 +2112,8 @@
+@@ -2167,6 +2175,8 @@
table->s->db.str, table->s->table_name.str,
(long) table, table->alias));
if (table->prev)
{
table->prev->next= table->next;
-@@ -2130,6 +2140,9 @@
+@@ -2193,6 +2203,9 @@
slave_open_temp_tables--;
}
close_temporary(table, free_share, delete_table);
DBUG_VOID_RETURN;
}
-@@ -5854,6 +5867,7 @@
+@@ -5932,6 +5945,7 @@
if (add_to_temporary_tables_list)
{
/* growing temp list at the head */
tmp_table->next= thd->temporary_tables;
if (tmp_table->next)
tmp_table->next->prev= tmp_table;
-@@ -5861,6 +5875,7 @@
+@@ -5939,6 +5953,7 @@
thd->temporary_tables->prev= 0;
if (thd->slave_thread)
slave_open_temp_tables++;
DBUG_PRINT("tmptable", ("opened table: '%s'.'%s' 0x%lx", tmp_table->s->db.str,
--- a/sql/sql_class.cc
+++ b/sql/sql_class.cc
-@@ -837,6 +837,8 @@
+@@ -836,6 +836,8 @@
active_vio = 0;
#endif
mysql_mutex_init(key_LOCK_thd_data, &LOCK_thd_data, MY_MUTEX_INIT_FAST);
/* Variables with default values */
proc_info="login";
-@@ -1349,6 +1351,7 @@
+@@ -1348,6 +1350,7 @@
db= NULL;
free_root(&transaction.mem_root,MYF(0));
mysql_mutex_destroy(&LOCK_thd_data);
#endif
--- a/sql/sql_class.h
+++ b/sql/sql_class.h
-@@ -1004,6 +1004,11 @@
+@@ -1002,6 +1002,11 @@
XXX Why are internal temporary tables added to this list?
*/
TABLE *temporary_tables;