mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Merge bk-internal.mysql.com:/home/bk/mysql-5.1
into bodhi.(none):/opt/local/work/mysql-5.1-27430 include/my_global.h: Auto merged mysql-test/r/grant.result: Auto merged mysql-test/t/disabled.def: Auto merged mysql-test/t/grant.test: Auto merged sql/item.cc: Auto merged sql/mysql_priv.h: Auto merged sql/mysqld.cc: Auto merged sql/set_var.cc: Auto merged sql/sql_acl.cc: Auto merged sql/sql_class.cc: Auto merged sql/sql_class.h: Auto merged sql/sql_parse.cc: Auto merged sql/sql_table.cc: Auto merged sql/sql_yacc.yy: Auto merged sql/table.h: Auto merged storage/myisam/mi_create.c: Auto merged tests/mysql_client_test.c: Auto merged sql/share/errmsg.txt: Manual merge.
This commit is contained in:
@ -259,6 +259,21 @@ protected:
|
||||
#define USER_VARS_HASH_SIZE 16
|
||||
#define TABLE_OPEN_CACHE_MIN 64
|
||||
#define TABLE_OPEN_CACHE_DEFAULT 64
|
||||
#define TABLE_DEF_CACHE_DEFAULT 256
|
||||
/**
|
||||
We must have room for at least 256 table definitions in the table
|
||||
cache, since otherwise there is no chance prepared
|
||||
statements that use these many tables can work.
|
||||
Prepared statements use table definition cache ids (table_map_id)
|
||||
as table version identifiers. If the table definition
|
||||
cache size is less than the number of tables used in a statement,
|
||||
the contents of the table definition cache is guaranteed to rotate
|
||||
between a prepare and execute. This leads to stable validation
|
||||
errors. In future we shall use more stable version identifiers,
|
||||
for now the only solution is to ensure that the table definition
|
||||
cache can contain at least all tables of a given statement.
|
||||
*/
|
||||
#define TABLE_DEF_CACHE_MIN 256
|
||||
|
||||
/*
|
||||
Value of 9236 discovered through binary search 2006-09-26 on Ubuntu Dapper
|
||||
@ -670,6 +685,31 @@ const char *set_thd_proc_info(THD *thd, const char *info,
|
||||
const char *calling_file,
|
||||
const unsigned int calling_line);
|
||||
|
||||
/**
|
||||
Enumerate possible types of a table from re-execution
|
||||
standpoint.
|
||||
TABLE_LIST class has a member of this type.
|
||||
At prepared statement prepare, this member is assigned a value
|
||||
as of the current state of the database. Before (re-)execution
|
||||
of a prepared statement, we check that the value recorded at
|
||||
prepare matches the type of the object we obtained from the
|
||||
table definition cache.
|
||||
|
||||
@sa check_and_update_table_version()
|
||||
@sa Execute_observer
|
||||
@sa Prepared_statement::reprepare()
|
||||
*/
|
||||
|
||||
enum enum_metadata_type
|
||||
{
|
||||
/** Initial value set by the parser */
|
||||
METADATA_NULL= 0,
|
||||
METADATA_VIEW,
|
||||
METADATA_BASE_TABLE,
|
||||
METADATA_I_S_TABLE,
|
||||
METADATA_TMP_TABLE
|
||||
};
|
||||
|
||||
/*
|
||||
External variables
|
||||
*/
|
||||
|
Reference in New Issue
Block a user