mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Merge with 4.0.4
BitKeeper/etc/logging_ok: auto-union client/mysqldump.c: Auto merged include/Makefile.am: Auto merged include/my_base.h: Auto merged include/my_sys.h: Auto merged include/sslopt-case.h: Auto merged libmysql/libmysql.c: Auto merged libmysql/libmysql.def: Auto merged libmysqld/lib_sql.cc: Auto merged myisam/ft_boolean_search.c: Auto merged myisam/mi_check.c: Auto merged myisam/mi_create.c: Auto merged myisam/myisamchk.c: Auto merged mysql-test/mysql-test-run.sh: Auto merged mysql-test/r/create.result: Auto merged mysql-test/r/innodb.result: Auto merged mysql-test/r/myisam.result: Auto merged mysql-test/r/select.result: Auto merged mysql-test/r/type_set.result: Auto merged mysql-test/t/create.test: Auto merged mysql-test/t/myisam.test: Auto merged sql/Makefile.am: Auto merged sql/filesort.cc: Auto merged sql/ha_innodb.cc: Auto merged sql/ha_myisam.cc: Auto merged sql/handler.h: Auto merged sql/item_cmpfunc.cc: Auto merged sql/item_strfunc.cc: Auto merged sql/item_strfunc.h: Auto merged sql/lex.h: Auto merged sql/log.cc: Auto merged sql/log_event.cc: Auto merged sql/mysql_priv.h: Auto merged sql/mysqld.cc: Auto merged sql/net_pkg.cc: Auto merged sql/net_serv.cc: Auto merged sql/opt_range.cc: Auto merged sql/set_var.h: Auto merged sql/slave.cc: Auto merged sql/sql_base.cc: Auto merged sql/sql_class.h: Auto merged sql/sql_insert.cc: Auto merged sql/sql_lex.cc: Auto merged sql/sql_lex.h: Auto merged sql/sql_load.cc: Auto merged sql/share/english/errmsg.txt: Auto merged sql/sql_table.cc: Auto merged sql/sql_udf.cc: Auto merged sql/sql_union.cc: Auto merged sql/unireg.h: Auto merged sql/sql_cache.cc: Code cleanup (removed ifdef)
This commit is contained in:
@ -278,6 +278,21 @@ TODO list:
|
||||
- Move MRG_MYISAM table type processing to handlers, something like:
|
||||
tables_used->table->file->register_used_filenames(callback,
|
||||
first_argument);
|
||||
- Make derived tables cachable.
|
||||
- QC improvement suggested by Monty:
|
||||
- Add a counter in open_table() for how many MERGE (ISAM or MyISAM)
|
||||
tables are cached in the table cache.
|
||||
(This will be trivial when we have the new table cache in place I
|
||||
have been working on)
|
||||
- After this we can add the following test around the for loop in
|
||||
is_cacheable::
|
||||
|
||||
if (thd->temp_tables || global_merge_table_count)
|
||||
|
||||
- Another option would be to set thd->safe_to_cache_query to 0
|
||||
in 'get_lock_data' if any of the tables was a tmp table or a
|
||||
MRG_ISAM table.
|
||||
(This could be done with almost no speed penalty)
|
||||
*/
|
||||
|
||||
#include "mysql_priv.h"
|
||||
@ -888,8 +903,9 @@ Query_cache::send_result_to_client(THD *thd, char *sql, uint query_length)
|
||||
Test if the query is a SELECT
|
||||
(pre-space is removed in dispatch_command)
|
||||
*/
|
||||
if (toupper(sql[0]) != 'S' || toupper(sql[1]) != 'E' ||
|
||||
toupper(sql[2]) !='L')
|
||||
if (my_toupper(system_charset_info, sql[0]) != 'S' ||
|
||||
my_toupper(system_charset_info, sql[1]) != 'E' ||
|
||||
my_toupper(system_charset_info,sql[2]) !='L')
|
||||
{
|
||||
DBUG_PRINT("qcache", ("The statement is not a SELECT; Not cached"));
|
||||
goto err;
|
||||
@ -1376,17 +1392,16 @@ ulong Query_cache::init_cache()
|
||||
|
||||
DUMP(this);
|
||||
|
||||
VOID(hash_init(&queries,def_query_hash_size, 0, 0,
|
||||
VOID(hash_init(&queries,system_charset_info,def_query_hash_size, 0, 0,
|
||||
query_cache_query_get_key, 0, 0));
|
||||
#ifndef __WIN__
|
||||
VOID(hash_init(&tables,def_table_hash_size, 0, 0,
|
||||
query_cache_table_get_key, 0, 0));
|
||||
#else
|
||||
// windows case insensitive file names work around
|
||||
VOID(hash_init(&tables,def_table_hash_size, 0, 0,
|
||||
query_cache_table_get_key, 0,
|
||||
(lower_case_table_names?0:HASH_CASE_INSENSITIVE)));
|
||||
#endif
|
||||
/*
|
||||
On windows we have to compare names case insensitive as for the OS
|
||||
A.frm and a.frm are the same file.
|
||||
*/
|
||||
VOID(hash_init(&tables,system_charset_info,def_table_hash_size, 0, 0,
|
||||
query_cache_table_get_key, 0,
|
||||
IF_WIN((lower_case_table_names ? 0: HASH_CASE_INSENSITIVE),
|
||||
0)));
|
||||
|
||||
queries_in_cache = 0;
|
||||
queries_blocks = 0;
|
||||
|
Reference in New Issue
Block a user