mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
ixed wrong unlock of tables (new bug)
sql/sql_delete.cc: Comment cleanup sql/sql_insert.cc: Comment cleanup sql/sql_load.cc: Comment cleanup sql/sql_update.cc: Fixed wrong unlock of tables. (Unlock must be done after writing to binary log
This commit is contained in:
@ -481,8 +481,10 @@ bool multi_delete::send_eof()
|
||||
/* reset used flags */
|
||||
thd->proc_info="end";
|
||||
|
||||
/* We must invalidate the query cache before binlog writing and
|
||||
ha_autocommit_... */
|
||||
/*
|
||||
We must invalidate the query cache before binlog writing and
|
||||
ha_autocommit_...
|
||||
*/
|
||||
if (deleted)
|
||||
query_cache_invalidate3(thd, delete_tables, 1);
|
||||
|
||||
|
@ -350,9 +350,7 @@ int mysql_insert(THD *thd,TABLE_LIST *table_list,
|
||||
before binlog writing and ha_autocommit_...
|
||||
*/
|
||||
if (info.copied || info.deleted)
|
||||
{
|
||||
query_cache_invalidate3(thd, table_list, 1);
|
||||
}
|
||||
|
||||
transactional_table= table->file->has_transactions();
|
||||
|
||||
@ -1424,9 +1422,7 @@ void select_insert::send_error(uint errcode,const char *err)
|
||||
table->file->extra(HA_EXTRA_NO_CACHE);
|
||||
table->file->activate_all_index(thd);
|
||||
if (info.copied || info.deleted)
|
||||
{
|
||||
query_cache_invalidate3(thd, table, 1);
|
||||
}
|
||||
ha_rollback_stmt(thd);
|
||||
}
|
||||
|
||||
@ -1438,13 +1434,13 @@ bool select_insert::send_eof()
|
||||
error=table->file->activate_all_index(thd);
|
||||
table->file->extra(HA_EXTRA_NO_IGNORE_DUP_KEY);
|
||||
|
||||
/* We must invalidate the table in the query cache before binlog writing
|
||||
and ha_autocommit_... */
|
||||
/*
|
||||
We must invalidate the table in the query cache before binlog writing
|
||||
and ha_autocommit_...
|
||||
*/
|
||||
|
||||
if (info.copied || info.deleted)
|
||||
{
|
||||
query_cache_invalidate3(thd, table, 1);
|
||||
}
|
||||
|
||||
/* Write to binlog before commiting transaction */
|
||||
if (mysql_bin_log.is_open())
|
||||
|
@ -283,8 +283,10 @@ int mysql_load(THD *thd,sql_exchange *ex,TABLE_LIST *table_list,
|
||||
table->copy_blobs=0;
|
||||
thd->count_cuted_fields=0; /* Don`t calc cuted fields */
|
||||
|
||||
/* We must invalidate the table in query cache before binlog writing and
|
||||
ha_autocommit_... */
|
||||
/*
|
||||
We must invalidate the table in query cache before binlog writing and
|
||||
ha_autocommit_...
|
||||
*/
|
||||
query_cache_invalidate3(thd, table_list, 0);
|
||||
|
||||
if (error)
|
||||
|
@ -338,14 +338,7 @@ int mysql_update(THD *thd,
|
||||
This must be before binlog writing and ha_autocommit_...
|
||||
*/
|
||||
if (updated)
|
||||
{
|
||||
query_cache_invalidate3(thd, table_list, 1);
|
||||
}
|
||||
if (thd->lock)
|
||||
{
|
||||
mysql_unlock_tables(thd, thd->lock);
|
||||
thd->lock=0;
|
||||
}
|
||||
|
||||
transactional_table= table->file->has_transactions();
|
||||
log_delayed= (transactional_table || table->tmp_table);
|
||||
@ -368,6 +361,12 @@ int mysql_update(THD *thd,
|
||||
error=1;
|
||||
}
|
||||
|
||||
if (thd->lock)
|
||||
{
|
||||
mysql_unlock_tables(thd, thd->lock);
|
||||
thd->lock=0;
|
||||
}
|
||||
|
||||
delete select;
|
||||
free_underlaid_joins(thd, &thd->lex.select_lex);
|
||||
if (error >= 0)
|
||||
|
Reference in New Issue
Block a user