added building without query cache
This commit is contained in:
parent
144b790fc6
commit
c5d95b5e62
12
configure.in
12
configure.in
@ -1797,6 +1797,18 @@ AC_ARG_WITH(embedded-server,
|
||||
[with_embedded_server=no]
|
||||
)
|
||||
|
||||
AC_ARG_WITH(query_cache,
|
||||
[ --without-query-cache Don't build query cache in embedded server.],
|
||||
[with_embedded_server=$withval],
|
||||
[with_embedded_server=yes]
|
||||
)
|
||||
|
||||
if test "$with_embedded_server" = "yes"
|
||||
then
|
||||
CFLAGS="$CFLAGS -DHAVE_QUERY_CACHE"
|
||||
CXXFLAGS="$CXXFLAGS -DHAVE_QUERY_CACHE"
|
||||
fi
|
||||
|
||||
AC_ARG_WITH(extra-tools,
|
||||
[ --without-extra-tools Skip building utilites in the tools directory.],
|
||||
[with_tools=$withval],
|
||||
|
@ -1023,4 +1023,12 @@ typedef union {
|
||||
#define C_MODE_END
|
||||
#endif
|
||||
|
||||
/*
|
||||
Now if query is taken off then tests with query cache fails
|
||||
SANJA TODO: remove this when problem with mysql-test will be solved
|
||||
*/
|
||||
#ifdef MYSQL_SERVER
|
||||
#define HAVE_QUERY_CACHE
|
||||
#endif
|
||||
|
||||
#endif /* _global_h */
|
||||
|
4
mysql-test/include/have_query_cache.inc
Normal file
4
mysql-test/include/have_query_cache.inc
Normal file
@ -0,0 +1,4 @@
|
||||
-- require r/have_query_cache.require
|
||||
disable_query_log;
|
||||
show variables like "have_query_cache";
|
||||
enable_query_log;
|
@ -28,8 +28,3 @@ select * from t1;
|
||||
n
|
||||
345
|
||||
drop table t1;
|
||||
flush query cache;
|
||||
reset query cache;
|
||||
show status like "Qcache_queries_in_cache";
|
||||
Variable_name Value
|
||||
Qcache_queries_in_cache 0
|
||||
|
2
mysql-test/r/have_query_cache.require
Normal file
2
mysql-test/r/have_query_cache.require
Normal file
@ -0,0 +1,2 @@
|
||||
Variable_name Value
|
||||
have_query_cache YES
|
@ -67,11 +67,3 @@ insert into t1 values (345);
|
||||
select * from t1;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Test that QUERY CACHE commands doesn't core dump.
|
||||
# (Normally we don't have a cache active at this point)
|
||||
#
|
||||
|
||||
flush query cache;
|
||||
reset query cache;
|
||||
show status like "Qcache_queries_in_cache";
|
||||
|
@ -1,3 +1,5 @@
|
||||
-- source include/have_query_cache.inc
|
||||
|
||||
#
|
||||
# Test grants with query cache
|
||||
#
|
||||
|
@ -1,3 +1,5 @@
|
||||
-- source include/have_query_cache.inc
|
||||
|
||||
#
|
||||
# Tests with query cache
|
||||
#
|
||||
|
@ -46,7 +46,7 @@ int ha_myisammrg::open(const char *name, int mode, uint test_if_locked)
|
||||
return (my_errno ? my_errno : -1);
|
||||
}
|
||||
DBUG_PRINT("info", ("ha_myisammrg::open myrg_extrafunc..."))
|
||||
myrg_extrafunc(file, &query_cache_invalidate_by_MyISAM_filename);
|
||||
myrg_extrafunc(file, query_cache_invalidate_by_MyISAM_filename_ref);
|
||||
if (!(test_if_locked == HA_OPEN_WAIT_IF_LOCKED ||
|
||||
test_if_locked == HA_OPEN_ABORT_IF_LOCKED))
|
||||
myrg_extra(file,HA_EXTRA_NO_WAIT_LOCK);
|
||||
|
@ -309,8 +309,10 @@ int ha_commit_trans(THD *thd, THD_TRANS* trans)
|
||||
|
||||
}
|
||||
#endif
|
||||
#ifdef HAVE_QUERY_CACHE
|
||||
if (transaction_commited)
|
||||
query_cache.invalidate(thd->transaction.changed_tables);
|
||||
#endif /*HAVE_QUERY_CACHE*/
|
||||
if (error && trans == &thd->transaction.all && mysql_bin_log.is_open())
|
||||
sql_print_error("Error: Got error during commit; Binlog is not up to date!");
|
||||
thd->tx_isolation=thd->session_tx_isolation;
|
||||
|
@ -251,7 +251,33 @@ inline THD *_current_thd(void)
|
||||
#include "item.h"
|
||||
#include "sql_class.h"
|
||||
#include "opt_range.h"
|
||||
|
||||
#ifdef HAVE_QUERY_CACHE
|
||||
#include "sql_cache.h"
|
||||
#define query_cache_store_query(A, B) query_cache.store_query(A, B)
|
||||
#define query_cache_destroy() query_cache.destroy()
|
||||
#define query_cache_result_size_limit(A) query_cache.result_size_limit(A)
|
||||
#define query_cache_resize(A) query_cache.resize(A)
|
||||
#define query_cache_invalidate3(A, B, C) query_cache.invalidate(A, B, C)
|
||||
#define query_cache_invalidate1(A) query_cache.invalidate(A)
|
||||
#define query_cache_send_result_to_client(A, B, C) \
|
||||
query_cache.send_result_to_client(A, B, C)
|
||||
#define query_cache_invalidate_by_MyISAM_filename_ref \
|
||||
&query_cache_invalidate_by_MyISAM_filename
|
||||
#else
|
||||
#define query_cache_store_query(A, B)
|
||||
#define query_cache_destroy()
|
||||
#define query_cache_result_size_limit(A)
|
||||
#define query_cache_resize(A)
|
||||
#define query_cache_invalidate3(A, B, C)
|
||||
#define query_cache_invalidate1(A)
|
||||
#define query_cache_send_result_to_client(A, B, C) 0
|
||||
#define query_cache_invalidate_by_MyISAM_filename_ref NULL
|
||||
|
||||
#define query_cache_abort(A)
|
||||
#define query_cache_end_of_result(A)
|
||||
#define query_cache_invalidate_by_MyISAM_filename_ref NULL
|
||||
#endif /*HAVE_QUERY_CACHE*/
|
||||
|
||||
int mysql_create_db(THD *thd, char *db, uint create_info, bool silent);
|
||||
int mysql_rm_db(THD *thd,char *db,bool if_exists, bool silent);
|
||||
|
@ -209,7 +209,11 @@ SHOW_COMP_OPTION have_openssl=SHOW_OPTION_YES;
|
||||
SHOW_COMP_OPTION have_openssl=SHOW_OPTION_NO;
|
||||
#endif
|
||||
SHOW_COMP_OPTION have_symlink=SHOW_OPTION_YES;
|
||||
|
||||
#ifdef HAVE_QUERY_CACHE
|
||||
SHOW_COMP_OPTION have_query_cache=SHOW_OPTION_YES;
|
||||
#else
|
||||
SHOW_COMP_OPTION have_query_cache=SHOW_OPTION_NO;
|
||||
#endif
|
||||
|
||||
bool opt_skip_slave_start = 0; // If set, slave is not autostarted
|
||||
static bool opt_do_pstack = 0;
|
||||
@ -276,7 +280,11 @@ ulong keybuff_size,sortbuff_size,max_item_sort_length,table_cache_size,
|
||||
ulong com_stat[(uint) SQLCOM_END], com_other;
|
||||
ulong slave_net_timeout;
|
||||
ulong thread_cache_size=0, binlog_cache_size=0, max_binlog_cache_size=0;
|
||||
ulong query_cache_size=0, query_cache_limit=0, query_cache_startup_type=1;
|
||||
#ifdef HAVE_QUERY_CACHE
|
||||
ulong query_cache_size=0, query_cache_limit=0, query_cache_startup_type=1;
|
||||
Query_cache query_cache;
|
||||
#endif
|
||||
|
||||
volatile ulong cached_thread_count=0;
|
||||
|
||||
// replication parameters, if master_host is not NULL, we are a slave
|
||||
@ -370,8 +378,6 @@ pthread_mutex_t LOCK_mysql_create_db, LOCK_Acl, LOCK_open, LOCK_thread_count,
|
||||
LOCK_server_id,
|
||||
LOCK_user_conn, LOCK_slave_list, LOCK_active_mi;
|
||||
|
||||
Query_cache query_cache;
|
||||
|
||||
pthread_cond_t COND_refresh,COND_thread_count,COND_binlog_update,
|
||||
COND_slave_stopped, COND_slave_start;
|
||||
pthread_cond_t COND_thread_cache,COND_flush_thread_cache;
|
||||
@ -765,7 +771,7 @@ void clean_up(bool print_message)
|
||||
bitmap_free(&slave_error_mask);
|
||||
acl_free(1);
|
||||
grant_free();
|
||||
query_cache.destroy();
|
||||
query_cache_destroy();
|
||||
table_cache_free();
|
||||
hostname_cache_free();
|
||||
item_user_lock_free();
|
||||
@ -1870,8 +1876,8 @@ int main(int argc, char **argv)
|
||||
server_init();
|
||||
table_cache_init();
|
||||
hostname_cache_init();
|
||||
query_cache.result_size_limit(query_cache_limit);
|
||||
query_cache.resize(query_cache_size);
|
||||
query_cache_result_size_limit(query_cache_limit);
|
||||
query_cache_resize(query_cache_size);
|
||||
randominit(&sql_rand,(ulong) start_time,(ulong) start_time/2);
|
||||
reset_floating_point_exceptions();
|
||||
init_thr_lock();
|
||||
@ -3001,12 +3007,14 @@ CHANGEABLE_VAR changeable_vars[] = {
|
||||
0, 0, 65535, 0, 1},
|
||||
{ "query_buffer_size", (long*) &query_buff_size,
|
||||
0, MALLOC_OVERHEAD, (long) ~0, MALLOC_OVERHEAD, IO_SIZE },
|
||||
#ifdef HAVE_QUERY_CACHE
|
||||
{ "query_cache_limit", (long*) &query_cache_limit,
|
||||
1024*1024L, 0, ULONG_MAX, 0, 1},
|
||||
{ "query_cache_size", (long*) &query_cache_size,
|
||||
0, 0, ULONG_MAX, 0, 1},
|
||||
{ "query_cache_startup_type",(long*) &query_cache_startup_type,
|
||||
1, 0, 2, 0, 1},
|
||||
#endif /*HAVE_QUERY_CACHE*/
|
||||
{ "record_buffer", (long*) &my_default_record_cache_size,
|
||||
128*1024L, IO_SIZE*2+MALLOC_OVERHEAD, ~0L, MALLOC_OVERHEAD, IO_SIZE },
|
||||
{ "record_rnd_buffer", (long*) &record_rnd_cache_size,
|
||||
@ -3068,6 +3076,7 @@ struct show_var_st init_vars[]= {
|
||||
{"have_raid", (char*) &have_raid, SHOW_HAVE},
|
||||
{"have_symlink", (char*) &have_symlink, SHOW_HAVE},
|
||||
{"have_openssl", (char*) &have_openssl, SHOW_HAVE},
|
||||
{"have_query_cache", (char*) &have_query_cache, SHOW_HAVE},
|
||||
{"init_file", (char*) &opt_init_file, SHOW_CHAR_PTR},
|
||||
#ifdef HAVE_INNOBASE_DB
|
||||
{"innodb_additional_mem_pool_size", (char*) &innobase_additional_mem_pool_size, SHOW_LONG },
|
||||
@ -3135,9 +3144,11 @@ struct show_var_st init_vars[]= {
|
||||
{"record_rnd_buffer", (char*) &record_rnd_cache_size, SHOW_LONG},
|
||||
{"rpl_recovery_rank", (char*) &rpl_recovery_rank, SHOW_LONG},
|
||||
{"query_buffer_size", (char*) &query_buff_size, SHOW_LONG},
|
||||
#ifdef HAVE_QUERY_CACHE
|
||||
{"query_cache_limit", (char*) &query_cache.query_cache_limit, SHOW_LONG},
|
||||
{"query_cache_size", (char*) &query_cache.query_cache_size, SHOW_LONG},
|
||||
{"query_cache_startup_type",(char*) &query_cache_startup_type, SHOW_LONG},
|
||||
#endif /*HAVE_QUERY_CACHE*/
|
||||
{"safe_show_database", (char*) &opt_safe_show_db, SHOW_BOOL},
|
||||
{"server_id", (char*) &server_id, SHOW_LONG},
|
||||
{"slave_net_timeout", (char*) &slave_net_timeout, SHOW_LONG},
|
||||
@ -3268,6 +3279,7 @@ struct show_var_st status_vars[]= {
|
||||
{"Open_streams", (char*) &my_stream_opened, SHOW_INT_CONST},
|
||||
{"Opened_tables", (char*) &opened_tables, SHOW_LONG},
|
||||
{"Questions", (char*) 0, SHOW_QUESTION},
|
||||
#ifdef HAVE_QUERY_CACHE
|
||||
{"Qcache_queries_in_cache", (char*) &query_cache.queries_in_cache, SHOW_LONG_CONST},
|
||||
{"Qcache_inserts", (char*) &query_cache.inserts, SHOW_LONG},
|
||||
{"Qcache_hits", (char*) &query_cache.hits, SHOW_LONG},
|
||||
@ -3278,6 +3290,7 @@ struct show_var_st status_vars[]= {
|
||||
SHOW_LONG_CONST},
|
||||
{"Qcache_total_blocks", (char*) &query_cache.total_blocks,
|
||||
SHOW_LONG_CONST},
|
||||
#endif /*HAVE_QUERY_CACHE*/
|
||||
{"Rpl_status", (char*) 0, SHOW_RPL_STATUS},
|
||||
{"Select_full_join", (char*) &select_full_join_count, SHOW_LONG},
|
||||
{"Select_full_range_join", (char*) &select_full_range_join_count, SHOW_LONG},
|
||||
@ -3883,7 +3896,9 @@ static void get_options(int argc,char **argv)
|
||||
my_use_symdir=0;
|
||||
have_symlink=SHOW_OPTION_DISABLED;
|
||||
ha_open_options&= ~HA_OPEN_ABORT_IF_CRASHED;
|
||||
#ifdef HAVE_QUERY_CACHE
|
||||
query_cache_size=0;
|
||||
#endif
|
||||
break;
|
||||
case (int) OPT_SAFE:
|
||||
opt_specialflag|= SPECIAL_SAFE_MODE;
|
||||
|
@ -329,9 +329,11 @@ net_real_write(NET *net,const char *packet,ulong len)
|
||||
my_bool net_blocking = vio_is_blocking(net->vio);
|
||||
DBUG_ENTER("net_real_write");
|
||||
|
||||
#ifdef MYSQL_SERVER
|
||||
#ifdef MYSQL_SERVER
|
||||
#ifdef HAVE_QUERY_CACHE
|
||||
if (net->query_cache_query != 0)
|
||||
query_cache_insert(net, packet, len);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
if (net->error == 2)
|
||||
|
@ -281,6 +281,7 @@ TODO list:
|
||||
*/
|
||||
|
||||
#include "mysql_priv.h"
|
||||
#ifdef HAVE_QUERY_CACHE
|
||||
#include <m_ctype.h>
|
||||
#include <my_dir.h>
|
||||
#include <hash.h>
|
||||
@ -3460,3 +3461,5 @@ err2:
|
||||
}
|
||||
|
||||
#endif /* DBUG_OFF */
|
||||
|
||||
#endif /*HAVE_QUERY_CACHE*/
|
||||
|
@ -122,10 +122,14 @@ THD::THD():user_time(0),fatal_error(0),last_insert_id_used(0),
|
||||
server_id = ::server_id;
|
||||
slave_net = 0;
|
||||
log_pos = 0;
|
||||
server_status=SERVER_STATUS_AUTOCOMMIT;
|
||||
server_status= SERVER_STATUS_AUTOCOMMIT;
|
||||
update_lock_default= low_priority_updates ? TL_WRITE_LOW_PRIORITY : TL_WRITE;
|
||||
options=thd_startup_options;
|
||||
query_cache_type = (byte) query_cache_startup_type;
|
||||
options= thd_startup_options;
|
||||
#ifdef HAVE_QUERY_CACHE
|
||||
query_cache_type= (byte) query_cache_startup_type;
|
||||
#else
|
||||
query_cache_type= 0; //Safety
|
||||
#endif
|
||||
sql_mode=(uint) opt_sql_mode;
|
||||
inactive_timeout=net_wait_timeout;
|
||||
open_options=ha_open_options;
|
||||
|
@ -159,7 +159,7 @@ int mysql_rm_db(THD *thd,char *db,bool if_exists, bool silent)
|
||||
if ((deleted=mysql_rm_known_files(thd, dirp, db, path,0)) >= 0 && thd)
|
||||
{
|
||||
ha_drop_database(path);
|
||||
query_cache.invalidate(db);
|
||||
query_cache_invalidate1(db);
|
||||
if (!silent)
|
||||
{
|
||||
if (!thd->query)
|
||||
|
@ -182,7 +182,7 @@ cleanup:
|
||||
thd->lock=0;
|
||||
}
|
||||
if (deleted)
|
||||
query_cache.invalidate(thd, table_list, 1);
|
||||
query_cache_invalidate3(thd, table_list, 1);
|
||||
delete select;
|
||||
if (error >= 0) // Fatal error
|
||||
send_error(&thd->net,thd->killed ? ER_SERVER_SHUTDOWN: 0);
|
||||
@ -470,7 +470,7 @@ bool multi_delete::send_eof()
|
||||
VOID(ha_autocommit_or_rollback(thd,error > 0));
|
||||
}
|
||||
if (deleted)
|
||||
query_cache.invalidate(thd, delete_tables, 1);
|
||||
query_cache_invalidate3(thd, delete_tables, 1);
|
||||
::send_ok(&thd->net,deleted);
|
||||
return 0;
|
||||
}
|
||||
@ -548,7 +548,7 @@ int mysql_truncate(THD *thd, TABLE_LIST *table_list, bool dont_send_ok)
|
||||
bzero((char*) &create_info,sizeof(create_info));
|
||||
*fn_ext(path)=0; // Remove the .frm extension
|
||||
error= ha_create_table(path,&create_info,1) ? -1 : 0;
|
||||
query_cache.invalidate(thd, table_list, 0);
|
||||
query_cache_invalidate3(thd, table_list, 0);
|
||||
|
||||
if (!dont_send_ok)
|
||||
{
|
||||
|
@ -311,7 +311,7 @@ int mysql_insert(THD *thd,TABLE_LIST *table_list, List<Item> &fields,
|
||||
}
|
||||
thd->proc_info="end";
|
||||
if (info.copied || info.deleted)
|
||||
query_cache.invalidate(thd, table_list, 1);
|
||||
query_cache_invalidate3(thd, table_list, 1);
|
||||
table->time_stamp=save_time_stamp; // Restore auto timestamp ptr
|
||||
table->next_number_field=0;
|
||||
thd->count_cuted_fields=0;
|
||||
@ -1217,7 +1217,7 @@ bool delayed_insert::handle_inserts(void)
|
||||
sql_print_error("%s",thd.net.last_error);
|
||||
goto err;
|
||||
}
|
||||
query_cache.invalidate(&thd, table, 1);
|
||||
query_cache_invalidate3(&thd, table, 1);
|
||||
if (thr_reschedule_write_lock(*thd.lock->locks))
|
||||
{
|
||||
/* This should never happen */
|
||||
@ -1242,7 +1242,7 @@ bool delayed_insert::handle_inserts(void)
|
||||
sql_print_error("%s",thd.net.last_error);
|
||||
goto err;
|
||||
}
|
||||
query_cache.invalidate(&thd, table, 1);
|
||||
query_cache_invalidate3(&thd, table, 1);
|
||||
pthread_mutex_lock(&mutex);
|
||||
DBUG_RETURN(0);
|
||||
|
||||
@ -1330,7 +1330,7 @@ void select_insert::send_error(uint errcode,const char *err)
|
||||
table->file->activate_all_index(thd);
|
||||
ha_rollback_stmt(thd);
|
||||
if (info.copied || info.deleted)
|
||||
query_cache.invalidate(thd, table, 1);
|
||||
query_cache_invalidate3(thd, table, 1);
|
||||
}
|
||||
|
||||
|
||||
@ -1343,7 +1343,7 @@ bool select_insert::send_eof()
|
||||
if ((error2=ha_autocommit_or_rollback(thd,error)) && ! error)
|
||||
error=error2;
|
||||
if (info.copied || info.deleted)
|
||||
query_cache.invalidate(thd, table, 1);
|
||||
query_cache_invalidate3(thd, table, 1);
|
||||
|
||||
if (error)
|
||||
{
|
||||
|
@ -1310,7 +1310,7 @@ mysql_execute_command(void)
|
||||
|
||||
if (!(res=open_and_lock_tables(thd,tables)))
|
||||
{
|
||||
query_cache.store_query(thd, tables);
|
||||
query_cache_store_query(thd, tables);
|
||||
res=handle_select(thd, lex, result);
|
||||
}
|
||||
else
|
||||
@ -1630,7 +1630,7 @@ mysql_execute_command(void)
|
||||
goto error;
|
||||
}
|
||||
}
|
||||
query_cache.invalidate(thd, tables, 0);
|
||||
query_cache_invalidate3(thd, tables, 0);
|
||||
if (end_active_trans(thd))
|
||||
res= -1;
|
||||
else if (mysql_rename_tables(thd,tables))
|
||||
@ -1669,7 +1669,7 @@ mysql_execute_command(void)
|
||||
check_table_access(thd,SELECT_ACL | INSERT_ACL, tables))
|
||||
goto error; /* purecov: inspected */
|
||||
res = mysql_repair_table(thd, tables, &lex->check_opt);
|
||||
query_cache.invalidate(thd, tables, 0);
|
||||
query_cache_invalidate3(thd, tables, 0);
|
||||
break;
|
||||
}
|
||||
case SQLCOM_CHECK:
|
||||
@ -1678,7 +1678,7 @@ mysql_execute_command(void)
|
||||
check_table_access(thd, SELECT_ACL | EXTRA_ACL , tables))
|
||||
goto error; /* purecov: inspected */
|
||||
res = mysql_check_table(thd, tables, &lex->check_opt);
|
||||
query_cache.invalidate(thd, tables, 0);
|
||||
query_cache_invalidate3(thd, tables, 0);
|
||||
break;
|
||||
}
|
||||
case SQLCOM_ANALYZE:
|
||||
@ -2722,7 +2722,7 @@ mysql_parse(THD *thd,char *inBuf,uint length)
|
||||
|
||||
mysql_init_query(thd);
|
||||
thd->query_length = length;
|
||||
if (query_cache.send_result_to_client(thd, inBuf, length) <= 0)
|
||||
if (query_cache_send_result_to_client(thd, inBuf, length) <= 0)
|
||||
{
|
||||
LEX *lex=lex_start(thd, (uchar*) inBuf, length);
|
||||
if (!yyparse() && ! thd->fatal_error)
|
||||
@ -3282,6 +3282,7 @@ bool reload_acl_and_cache(THD *thd, ulong options, TABLE_LIST *tables)
|
||||
if (ha_flush_logs())
|
||||
result=1;
|
||||
}
|
||||
#ifdef HAVE_QUERY_CACHE
|
||||
if (options & REFRESH_QUERY_CACHE_FREE)
|
||||
{
|
||||
query_cache.pack(); // FLUSH QUERY CACHE
|
||||
@ -3291,6 +3292,7 @@ bool reload_acl_and_cache(THD *thd, ulong options, TABLE_LIST *tables)
|
||||
{
|
||||
query_cache.flush(); // RESET QUERY CACHE
|
||||
}
|
||||
#endif /*HAVE_QUERY_CACHE*/
|
||||
if (options & (REFRESH_TABLES | REFRESH_READ_LOCK))
|
||||
{
|
||||
if ((options & REFRESH_READ_LOCK) && thd)
|
||||
|
@ -161,7 +161,7 @@ int mysql_rm_table_part2(THD *thd, TABLE_LIST *tables, bool if_exists,
|
||||
}
|
||||
if (some_tables_deleted)
|
||||
{
|
||||
query_cache.invalidate(thd, tables, 0);
|
||||
query_cache_invalidate3(thd, tables, 0);
|
||||
if (!dont_log_query)
|
||||
{
|
||||
mysql_update_log.write(thd, thd->query,thd->query_length);
|
||||
@ -1774,7 +1774,7 @@ int mysql_alter_table(THD *thd,char *new_db, char *new_name,
|
||||
VOID(pthread_cond_broadcast(&COND_refresh));
|
||||
VOID(pthread_mutex_unlock(&LOCK_open));
|
||||
table_list->table=0; // For query cache
|
||||
query_cache.invalidate(thd, table_list, 0);
|
||||
query_cache_invalidate3(thd, table_list, 0);
|
||||
|
||||
end_temporary:
|
||||
sprintf(tmp_name,ER(ER_INSERT_INFO),(ulong) (copied+deleted),
|
||||
|
@ -324,7 +324,7 @@ int mysql_update(THD *thd,
|
||||
thd->lock=0;
|
||||
}
|
||||
if (updated)
|
||||
query_cache.invalidate(thd, table_list, 1);
|
||||
query_cache_invalidate3(thd, table_list, 1);
|
||||
|
||||
delete select;
|
||||
if (error >= 0)
|
||||
@ -788,7 +788,7 @@ bool multi_update::send_eof()
|
||||
sprintf(buff,ER(ER_UPDATE_INFO), (long) found, (long) updated,
|
||||
(long) thd->cuted_fields);
|
||||
if (updated)
|
||||
query_cache.invalidate(thd, update_tables, 1);
|
||||
query_cache_invalidate3(thd, update_tables, 1);
|
||||
|
||||
::send_ok(&thd->net,
|
||||
(thd->client_capabilities & CLIENT_FOUND_ROWS) ? found : updated,
|
||||
|
Loading…
x
Reference in New Issue
Block a user