Commit 839d661b authored by bell@sanja.is.com.ua's avatar bell@sanja.is.com.ua

removed unneeded table name pointer

transaction-live memory cleanup moved to ha_commit/ha_rollback
fixed query cache validator to work correctly on systems that allocate unaligned dat
parent 1a690844
...@@ -316,7 +316,10 @@ int ha_commit_trans(THD *thd, THD_TRANS* trans) ...@@ -316,7 +316,10 @@ int ha_commit_trans(THD *thd, THD_TRANS* trans)
sql_print_error("Error: Got error during commit; Binlog is not up to date!"); sql_print_error("Error: Got error during commit; Binlog is not up to date!");
thd->tx_isolation=thd->session_tx_isolation; thd->tx_isolation=thd->session_tx_isolation;
if (operation_done) if (operation_done)
{
statistic_increment(ha_commit_count,&LOCK_status); statistic_increment(ha_commit_count,&LOCK_status);
thd->transaction.cleanup();
}
} }
#endif // using transactions #endif // using transactions
DBUG_RETURN(error); DBUG_RETURN(error);
...@@ -361,7 +364,10 @@ int ha_rollback_trans(THD *thd, THD_TRANS *trans) ...@@ -361,7 +364,10 @@ int ha_rollback_trans(THD *thd, THD_TRANS *trans)
thd->transaction.trans_log.end_of_file= max_binlog_cache_size; thd->transaction.trans_log.end_of_file= max_binlog_cache_size;
thd->tx_isolation=thd->session_tx_isolation; thd->tx_isolation=thd->session_tx_isolation;
if (operation_done) if (operation_done)
{
statistic_increment(ha_rollback_count,&LOCK_status); statistic_increment(ha_rollback_count,&LOCK_status);
thd->transaction.cleanup();
}
} }
#endif /* USING_TRANSACTIONS */ #endif /* USING_TRANSACTIONS */
DBUG_RETURN(error); DBUG_RETURN(error);
......
...@@ -1073,7 +1073,8 @@ void Query_cache::invalidate(CHANGED_TABLE_LIST *tables_used) ...@@ -1073,7 +1073,8 @@ void Query_cache::invalidate(CHANGED_TABLE_LIST *tables_used)
{ {
invalidate_table((byte*) tables_used->key, tables_used->key_length); invalidate_table((byte*) tables_used->key, tables_used->key_length);
DBUG_PRINT("qcache", (" db %s, table %s", tables_used->key, DBUG_PRINT("qcache", (" db %s, table %s", tables_used->key,
tables_used->table_name)); tables_used->key+
strlen(tables_used->key)+1));
} }
} }
STRUCT_UNLOCK(&structure_guard_mutex); STRUCT_UNLOCK(&structure_guard_mutex);
...@@ -1994,7 +1995,7 @@ Query_cache_block * ...@@ -1994,7 +1995,7 @@ Query_cache_block *
Query_cache::allocate_block(ulong len, my_bool not_less, ulong min, Query_cache::allocate_block(ulong len, my_bool not_less, ulong min,
my_bool under_guard) my_bool under_guard)
{ {
DBUG_ENTER("Query_cache::allocate_n_lock_block"); DBUG_ENTER("Query_cache::allocate_block");
DBUG_PRINT("qcache", ("len %lu, not less %d, min %lu, uder_guard %d", DBUG_PRINT("qcache", ("len %lu, not less %d, min %lu, uder_guard %d",
len, not_less,min,under_guard)); len, not_less,min,under_guard));
...@@ -3060,7 +3061,8 @@ my_bool Query_cache::check_integrity(bool not_locked) ...@@ -3060,7 +3061,8 @@ my_bool Query_cache::check_integrity(bool not_locked)
DBUG_PRINT("qcache", ("block 0x%lx, type %u...", DBUG_PRINT("qcache", ("block 0x%lx, type %u...",
(ulong) block, (uint) block->type)); (ulong) block, (uint) block->type));
// Check allignment // Check allignment
if ((ulonglong)block % ALIGN_SIZE(1)) if ((((ulonglong)block) % (ulonglong)ALIGN_SIZE(1)) !=
(((ulonglong)first_block) % (ulonglong)ALIGN_SIZE(1)))
{ {
DBUG_PRINT("error", DBUG_PRINT("error",
("block 0x%lx do not aligned by %d", (ulong) block, ("block 0x%lx do not aligned by %d", (ulong) block,
......
...@@ -345,11 +345,7 @@ CHANGED_TABLE_LIST* THD::changed_table_dup(TABLE *table) ...@@ -345,11 +345,7 @@ CHANGED_TABLE_LIST* THD::changed_table_dup(TABLE *table)
ALIGN_SIZE(sizeof(CHANGED_TABLE_LIST))); ALIGN_SIZE(sizeof(CHANGED_TABLE_LIST)));
new_table->next = 0; new_table->next = 0;
new_table->key_length = table->key_length; new_table->key_length = table->key_length;
uint32 db_len = ((new_table->table_name = ::memcpy(new_table->key, table->table_cache_key, table->key_length);
::strmake(new_table->key, table->table_cache_key,
table->key_length) + 1) - new_table->key);
::memcpy(new_table->key + db_len, table->table_cache_key + db_len,
table->key_length - db_len);
return new_table; return new_table;
} }
......
...@@ -2432,7 +2432,6 @@ mysql_execute_command(void) ...@@ -2432,7 +2432,6 @@ mysql_execute_command(void)
} }
else else
res= -1; res= -1;
thd->transaction.cleanup();
break; break;
} }
case SQLCOM_ROLLBACK: case SQLCOM_ROLLBACK:
...@@ -2447,7 +2446,6 @@ mysql_execute_command(void) ...@@ -2447,7 +2446,6 @@ mysql_execute_command(void)
else else
res= -1; res= -1;
thd->options&= ~(ulong) (OPTION_BEGIN | OPTION_STATUS_NO_TRANS_UPDATE); thd->options&= ~(ulong) (OPTION_BEGIN | OPTION_STATUS_NO_TRANS_UPDATE);
thd->transaction.cleanup();
break; break;
default: /* Impossible */ default: /* Impossible */
send_ok(&thd->net); send_ok(&thd->net);
......
...@@ -154,7 +154,7 @@ typedef struct st_table_list { ...@@ -154,7 +154,7 @@ typedef struct st_table_list {
typedef struct st_changed_table_list { typedef struct st_changed_table_list {
struct st_changed_table_list *next; struct st_changed_table_list *next;
char *key, *table_name; char *key;
uint32 key_length; uint32 key_length;
} CHANGED_TABLE_LIST; } CHANGED_TABLE_LIST;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment