mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
merge
This commit is contained in:
@ -176,15 +176,15 @@ cleanup:
|
|||||||
}
|
}
|
||||||
if (using_transactions && ha_autocommit_or_rollback(thd,error >= 0))
|
if (using_transactions && ha_autocommit_or_rollback(thd,error >= 0))
|
||||||
error=1;
|
error=1;
|
||||||
|
if (deleted)
|
||||||
|
{
|
||||||
|
query_cache_invalidate3(thd, table_list, 1);
|
||||||
|
}
|
||||||
if (thd->lock)
|
if (thd->lock)
|
||||||
{
|
{
|
||||||
mysql_unlock_tables(thd, thd->lock);
|
mysql_unlock_tables(thd, thd->lock);
|
||||||
thd->lock=0;
|
thd->lock=0;
|
||||||
}
|
}
|
||||||
if (deleted)
|
|
||||||
{
|
|
||||||
query_cache_invalidate3(thd, table_list, 1);
|
|
||||||
}
|
|
||||||
delete select;
|
delete select;
|
||||||
if (error >= 0) // Fatal error
|
if (error >= 0) // Fatal error
|
||||||
send_error(&thd->net,thd->killed ? ER_SERVER_SHUTDOWN: 0);
|
send_error(&thd->net,thd->killed ? ER_SERVER_SHUTDOWN: 0);
|
||||||
@ -357,6 +357,9 @@ void multi_delete::send_error(uint errcode,const char *err)
|
|||||||
if (!deleted)
|
if (!deleted)
|
||||||
DBUG_VOID_RETURN;
|
DBUG_VOID_RETURN;
|
||||||
|
|
||||||
|
/* Somthing alredy deleted consequently we have to invalidate cache */
|
||||||
|
query_cache_invalidate3(thd, delete_tables, 1);
|
||||||
|
|
||||||
/* Below can happen when thread is killed early ... */
|
/* Below can happen when thread is killed early ... */
|
||||||
if (!table_being_deleted)
|
if (!table_being_deleted)
|
||||||
table_being_deleted=delete_tables;
|
table_being_deleted=delete_tables;
|
||||||
|
@ -262,6 +262,8 @@ int mysql_insert(THD *thd,TABLE_LIST *table_list, List<Item> &fields,
|
|||||||
info.copied=values_list.elements;
|
info.copied=values_list.elements;
|
||||||
end_delayed_insert(thd);
|
end_delayed_insert(thd);
|
||||||
}
|
}
|
||||||
|
if (info.copied || info.deleted)
|
||||||
|
query_cache_invalidate3(thd, table_list, 1);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -303,6 +305,10 @@ int mysql_insert(THD *thd,TABLE_LIST *table_list, List<Item> &fields,
|
|||||||
}
|
}
|
||||||
if (using_transactions)
|
if (using_transactions)
|
||||||
error=ha_autocommit_or_rollback(thd,error);
|
error=ha_autocommit_or_rollback(thd,error);
|
||||||
|
if (info.copied || info.deleted)
|
||||||
|
{
|
||||||
|
query_cache_invalidate3(thd, table_list, 1);
|
||||||
|
}
|
||||||
if (thd->lock)
|
if (thd->lock)
|
||||||
{
|
{
|
||||||
mysql_unlock_tables(thd, thd->lock);
|
mysql_unlock_tables(thd, thd->lock);
|
||||||
@ -310,10 +316,6 @@ int mysql_insert(THD *thd,TABLE_LIST *table_list, List<Item> &fields,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
thd->proc_info="end";
|
thd->proc_info="end";
|
||||||
if (info.copied || info.deleted)
|
|
||||||
{
|
|
||||||
query_cache_invalidate3(thd, table_list, 1);
|
|
||||||
}
|
|
||||||
table->time_stamp=save_time_stamp; // Restore auto timestamp ptr
|
table->time_stamp=save_time_stamp; // Restore auto timestamp ptr
|
||||||
table->next_number_field=0;
|
table->next_number_field=0;
|
||||||
thd->count_cuted_fields=0;
|
thd->count_cuted_fields=0;
|
||||||
|
@ -1669,7 +1669,6 @@ mysql_execute_command(void)
|
|||||||
check_table_access(thd,SELECT_ACL | INSERT_ACL, tables))
|
check_table_access(thd,SELECT_ACL | INSERT_ACL, tables))
|
||||||
goto error; /* purecov: inspected */
|
goto error; /* purecov: inspected */
|
||||||
res = mysql_repair_table(thd, tables, &lex->check_opt);
|
res = mysql_repair_table(thd, tables, &lex->check_opt);
|
||||||
query_cache_invalidate3(thd, tables, 0);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case SQLCOM_CHECK:
|
case SQLCOM_CHECK:
|
||||||
@ -1678,7 +1677,6 @@ mysql_execute_command(void)
|
|||||||
check_table_access(thd, SELECT_ACL | EXTRA_ACL , tables))
|
check_table_access(thd, SELECT_ACL | EXTRA_ACL , tables))
|
||||||
goto error; /* purecov: inspected */
|
goto error; /* purecov: inspected */
|
||||||
res = mysql_check_table(thd, tables, &lex->check_opt);
|
res = mysql_check_table(thd, tables, &lex->check_opt);
|
||||||
query_cache_invalidate3(thd, tables, 0);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case SQLCOM_ANALYZE:
|
case SQLCOM_ANALYZE:
|
||||||
@ -1941,8 +1939,9 @@ mysql_execute_command(void)
|
|||||||
/* Fix tables-to-be-deleted-from list to point at opened tables */
|
/* Fix tables-to-be-deleted-from list to point at opened tables */
|
||||||
for (auxi=(TABLE_LIST*) aux_tables ; auxi ; auxi=auxi->next)
|
for (auxi=(TABLE_LIST*) aux_tables ; auxi ; auxi=auxi->next)
|
||||||
auxi->table= ((TABLE_LIST*) auxi->table)->table;
|
auxi->table= ((TABLE_LIST*) auxi->table)->table;
|
||||||
if (!thd->fatal_error && (result=new multi_delete(thd,aux_tables,
|
if (!thd->fatal_error && (result= new multi_delete(thd,aux_tables,
|
||||||
lex->lock_option,table_count)))
|
lex->lock_option,
|
||||||
|
table_count)))
|
||||||
{
|
{
|
||||||
res=mysql_select(thd,tables,select_lex->item_list,
|
res=mysql_select(thd,tables,select_lex->item_list,
|
||||||
select_lex->where,
|
select_lex->where,
|
||||||
|
@ -1120,8 +1120,12 @@ static int mysql_admin_table(THD* thd, TABLE_LIST* tables,
|
|||||||
if (fatal_error)
|
if (fatal_error)
|
||||||
table->table->version=0; // Force close of table
|
table->table->version=0; // Force close of table
|
||||||
else if (open_for_modify)
|
else if (open_for_modify)
|
||||||
|
{
|
||||||
remove_table_from_cache(thd, table->table->table_cache_key,
|
remove_table_from_cache(thd, table->table->table_cache_key,
|
||||||
table->table->real_name);
|
table->table->real_name);
|
||||||
|
/* May be something modified consequently we have to invalidate cache */
|
||||||
|
query_cache_invalidate3(thd, table->table, 0);
|
||||||
|
}
|
||||||
close_thread_tables(thd);
|
close_thread_tables(thd);
|
||||||
table->table=0; // For query cache
|
table->table=0; // For query cache
|
||||||
if (my_net_write(&thd->net, (char*) packet->ptr(),
|
if (my_net_write(&thd->net, (char*) packet->ptr(),
|
||||||
|
@ -318,15 +318,15 @@ int mysql_update(THD *thd,
|
|||||||
}
|
}
|
||||||
if (using_transactions && ha_autocommit_or_rollback(thd, error >= 0))
|
if (using_transactions && ha_autocommit_or_rollback(thd, error >= 0))
|
||||||
error=1;
|
error=1;
|
||||||
|
if (updated)
|
||||||
|
{
|
||||||
|
query_cache_invalidate3(thd, table_list, 1);
|
||||||
|
}
|
||||||
if (thd->lock)
|
if (thd->lock)
|
||||||
{
|
{
|
||||||
mysql_unlock_tables(thd, thd->lock);
|
mysql_unlock_tables(thd, thd->lock);
|
||||||
thd->lock=0;
|
thd->lock=0;
|
||||||
}
|
}
|
||||||
if (updated)
|
|
||||||
{
|
|
||||||
query_cache_invalidate3(thd, table_list, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
delete select;
|
delete select;
|
||||||
if (error >= 0)
|
if (error >= 0)
|
||||||
@ -644,6 +644,10 @@ void multi_update::send_error(uint errcode,const char *err)
|
|||||||
/* If nothing updated return */
|
/* If nothing updated return */
|
||||||
if (!updated)
|
if (!updated)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
/* Somthing alredy updated consequently we have to invalidate cache */
|
||||||
|
query_cache_invalidate3(thd, update_tables, 1);
|
||||||
|
|
||||||
/* Below can happen when thread is killed early ... */
|
/* Below can happen when thread is killed early ... */
|
||||||
if (!table_being_updated)
|
if (!table_being_updated)
|
||||||
table_being_updated=update_tables;
|
table_being_updated=update_tables;
|
||||||
|
Reference in New Issue
Block a user