1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-27 18:02:13 +03:00

Merge bb-10.2-ext into 10.3

This commit is contained in:
Marko Mäkelä
2018-01-17 16:33:40 +02:00
12 changed files with 135 additions and 47 deletions

View File

@ -1321,7 +1321,21 @@ public:
*/
struct Item_change_record;
typedef I_List<Item_change_record> Item_change_list;
class Item_change_list
{
I_List<Item_change_record> change_list;
public:
void nocheck_register_item_tree_change(Item **place, Item *old_value,
MEM_ROOT *runtime_memroot);
void check_and_register_item_tree_change(Item **place, Item **new_value,
MEM_ROOT *runtime_memroot);
void rollback_item_tree_changes();
void move_elements_to(Item_change_list *to)
{
change_list.move_elements_to(&to->change_list);
}
bool is_empty() { return change_list.is_empty(); }
};
/**
@ -2105,6 +2119,14 @@ extern "C" void my_message_sql(uint error, const char *str, myf MyFlags);
*/
class THD :public Statement,
/*
This is to track items changed during execution of a prepared
statement/stored procedure. It's created by
nocheck_register_item_tree_change() in memory root of THD,
and freed in rollback_item_tree_changes().
For conventional execution it's always empty.
*/
public Item_change_list,
public MDL_context_owner,
public Open_tables_state,
public QUERY_START_TIME_INFO
@ -2586,14 +2608,6 @@ public:
#ifdef SIGNAL_WITH_VIO_CLOSE
Vio* active_vio;
#endif
/*
This is to track items changed during execution of a prepared
statement/stored procedure. It's created by
nocheck_register_item_tree_change() in memory root of THD, and freed in
rollback_item_tree_changes(). For conventional execution it's always
empty.
*/
Item_change_list change_list;
/*
A permanent memory area of the statement. For conventional
@ -3785,11 +3799,6 @@ public:
*/
memcpy((char*) place, new_value, sizeof(*new_value));
}
void nocheck_register_item_tree_change(Item **place, Item *old_value,
MEM_ROOT *runtime_memroot);
void check_and_register_item_tree_change(Item **place, Item **new_value,
MEM_ROOT *runtime_memroot);
void rollback_item_tree_changes();
/*
Cleanup statement parse state (parse tree, lex) and execution