408
407
plugin_sessionvar_cleanup(this);
410
409
free_root(&warn_root,MYF(0));
411
free_root(&transaction.mem_root,MYF(0));
412
410
mysys_var=0; // Safety (shouldn't be needed)
413
411
dbug_sentry= Session_SENTRY_GONE;
564
562
reset_root_defaults(mem_root, variables.query_alloc_block_size,
565
563
variables.query_prealloc_size);
566
reset_root_defaults(&transaction.mem_root,
567
variables.trans_alloc_block_size,
568
variables.trans_prealloc_size);
569
564
transaction.xid_state.xid.null();
570
565
transaction.xid_state.in_session=1;
931
/* routings to adding tables to list of changed in transaction tables */
932
inline static void list_include(CHANGED_TableList** prev,
933
CHANGED_TableList* curr,
934
CHANGED_TableList* new_table)
939
(*prev)->next = curr;
943
/* add table to list of changed in transaction tables */
945
void Session::add_changed_table(Table *table)
947
assert((options & (OPTION_NOT_AUTOCOMMIT | OPTION_BEGIN)) &&
948
table->cursor->has_transactions());
949
add_changed_table(table->s->table_cache_key.str,
950
(long) table->s->table_cache_key.length);
954
void Session::add_changed_table(const char *key, long key_length)
956
CHANGED_TableList **prev_changed = &transaction.changed_tables;
957
CHANGED_TableList *curr = transaction.changed_tables;
959
for (; curr; prev_changed = &(curr->next), curr = curr->next)
961
int cmp = (long)curr->key_length - (long)key_length;
964
list_include(prev_changed, curr, changed_table_dup(key, key_length));
969
cmp = memcmp(curr->key, key, curr->key_length);
972
list_include(prev_changed, curr, changed_table_dup(key, key_length));
981
*prev_changed = changed_table_dup(key, key_length);
985
CHANGED_TableList* Session::changed_table_dup(const char *key, long key_length)
987
CHANGED_TableList* new_table =
988
(CHANGED_TableList*) trans_alloc(ALIGN_SIZE(sizeof(CHANGED_TableList))+
992
my_error(EE_OUTOFMEMORY, MYF(ME_BELL),
993
ALIGN_SIZE(sizeof(TableList)) + key_length + 1);
994
killed= KILL_CONNECTION;
998
new_table->key= ((char*)new_table)+ ALIGN_SIZE(sizeof(CHANGED_TableList));
1000
new_table->key_length = key_length;
1001
::memcpy(new_table->key, key, key_length);
1006
926
int Session::send_explain_fields(select_result *result)
1008
928
List<Item> field_list;