Simplify test for updateable TABLE_CATEGORY's
- Re-numbered enum_table_category to make some tests easier - Moved TABLE_CATEGORY_INFORMATION to be first CATEGORY of virtual tables - Don't take MDL locks for not updateable table category's
This commit is contained in:
parent
f1867505a6
commit
e54643a063
@ -2038,8 +2038,8 @@ retry_share:
|
|||||||
tc_add_table(thd, table);
|
tc_add_table(thd, table);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!(flags & MYSQL_OPEN_HAS_MDL_LOCK) &&
|
||||||
if (!(flags & MYSQL_OPEN_HAS_MDL_LOCK))
|
table->s->table_category < TABLE_CATEGORY_INFORMATION)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
We are not under LOCK TABLES and going to acquire write-lock/
|
We are not under LOCK TABLES and going to acquire write-lock/
|
||||||
|
@ -1180,10 +1180,8 @@ static bool wsrep_tables_accessible_when_detached(const TABLE_LIST *tables)
|
|||||||
{
|
{
|
||||||
for (const TABLE_LIST *table= tables; table; table= table->next_global)
|
for (const TABLE_LIST *table= tables; table; table= table->next_global)
|
||||||
{
|
{
|
||||||
TABLE_CATEGORY c;
|
|
||||||
LEX_CSTRING db= table->db, tn= table->table_name;
|
LEX_CSTRING db= table->db, tn= table->table_name;
|
||||||
c= get_table_category(&db, &tn);
|
if (get_table_category(&db, &tn) < TABLE_CATEGORY_INFORMATION)
|
||||||
if (c != TABLE_CATEGORY_INFORMATION && c != TABLE_CATEGORY_PERFORMANCE)
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
51
sql/table.h
51
sql/table.h
@ -394,28 +394,6 @@ enum enum_table_category
|
|||||||
*/
|
*/
|
||||||
TABLE_CATEGORY_SYSTEM=3,
|
TABLE_CATEGORY_SYSTEM=3,
|
||||||
|
|
||||||
/**
|
|
||||||
Information schema tables.
|
|
||||||
These tables are an interface provided by the system
|
|
||||||
to inspect the system metadata.
|
|
||||||
These tables do *not* honor:
|
|
||||||
- LOCK TABLE t FOR READ/WRITE
|
|
||||||
- FLUSH TABLES WITH READ LOCK
|
|
||||||
- SET GLOBAL READ_ONLY = ON
|
|
||||||
as there is no point in locking explicitly
|
|
||||||
an INFORMATION_SCHEMA table.
|
|
||||||
Nothing is directly written to information schema tables.
|
|
||||||
Note that this value is not used currently,
|
|
||||||
since information schema tables are not shared,
|
|
||||||
but implemented as session specific temporary tables.
|
|
||||||
*/
|
|
||||||
/*
|
|
||||||
TODO: Fixing the performance issues of I_S will lead
|
|
||||||
to I_S tables in the table cache, which should use
|
|
||||||
this table type.
|
|
||||||
*/
|
|
||||||
TABLE_CATEGORY_INFORMATION=4,
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Log tables.
|
Log tables.
|
||||||
These tables are an interface provided by the system
|
These tables are an interface provided by the system
|
||||||
@ -436,7 +414,33 @@ enum enum_table_category
|
|||||||
The server implementation perform writes.
|
The server implementation perform writes.
|
||||||
Log tables are cached in the table cache.
|
Log tables are cached in the table cache.
|
||||||
*/
|
*/
|
||||||
TABLE_CATEGORY_LOG=5,
|
TABLE_CATEGORY_LOG=4,
|
||||||
|
|
||||||
|
/*
|
||||||
|
Types below are read only tables, not affected by FLUSH TABLES or
|
||||||
|
MDL locks.
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
Information schema tables.
|
||||||
|
These tables are an interface provided by the system
|
||||||
|
to inspect the system metadata.
|
||||||
|
These tables do *not* honor:
|
||||||
|
- LOCK TABLE t FOR READ/WRITE
|
||||||
|
- FLUSH TABLES WITH READ LOCK
|
||||||
|
- SET GLOBAL READ_ONLY = ON
|
||||||
|
as there is no point in locking explicitly
|
||||||
|
an INFORMATION_SCHEMA table.
|
||||||
|
Nothing is directly written to information schema tables.
|
||||||
|
Note that this value is not used currently,
|
||||||
|
since information schema tables are not shared,
|
||||||
|
but implemented as session specific temporary tables.
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
TODO: Fixing the performance issues of I_S will lead
|
||||||
|
to I_S tables in the table cache, which should use
|
||||||
|
this table type.
|
||||||
|
*/
|
||||||
|
TABLE_CATEGORY_INFORMATION=5,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Performance schema tables.
|
Performance schema tables.
|
||||||
@ -460,6 +464,7 @@ enum enum_table_category
|
|||||||
*/
|
*/
|
||||||
TABLE_CATEGORY_PERFORMANCE=6
|
TABLE_CATEGORY_PERFORMANCE=6
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef enum enum_table_category TABLE_CATEGORY;
|
typedef enum enum_table_category TABLE_CATEGORY;
|
||||||
|
|
||||||
TABLE_CATEGORY get_table_category(const LEX_CSTRING *db,
|
TABLE_CATEGORY get_table_category(const LEX_CSTRING *db,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user