Commit bb1fdf7d authored by Rich Prohaska's avatar Rich Prohaska

#92 use parent txn in ::delete_or_rename_table. this removes error messages...

#92 use parent txn in ::delete_or_rename_table.  this removes error messages when running dict_leak_3518 test
parent c939c606
...@@ -298,10 +298,10 @@ static int free_share(TOKUDB_SHARE * share, bool mutex_is_locked) { ...@@ -298,10 +298,10 @@ static int free_share(TOKUDB_SHARE * share, bool mutex_is_locked) {
// It is imperative that we reset a DB to NULL once we are done with it. // It is imperative that we reset a DB to NULL once we are done with it.
// //
for (uint i = 0; i < sizeof(share->key_file)/sizeof(share->key_file[0]); i++) { for (uint i = 0; i < sizeof(share->key_file)/sizeof(share->key_file[0]); i++) {
if (tokudb_debug & TOKUDB_DEBUG_OPEN) {
TOKUDB_TRACE("dbclose:%p\n", share->key_file[i]);
}
if (share->key_file[i]) { if (share->key_file[i]) {
if (tokudb_debug & TOKUDB_DEBUG_OPEN) {
TOKUDB_TRACE("dbclose:%p\n", share->key_file[i]);
}
error = share->key_file[i]->close(share->key_file[i], 0); error = share->key_file[i]->close(share->key_file[i], 0);
assert(error == 0); assert(error == 0);
if (error) { if (error) {
...@@ -7186,6 +7186,7 @@ cleanup: ...@@ -7186,6 +7186,7 @@ cleanup:
// if is_delete is false, then to_name must be non-NULL, as we are renaming the table. // if is_delete is false, then to_name must be non-NULL, as we are renaming the table.
// //
int ha_tokudb::delete_or_rename_table (const char* from_name, const char* to_name, bool is_delete) { int ha_tokudb::delete_or_rename_table (const char* from_name, const char* to_name, bool is_delete) {
THD *thd = ha_thd();
int error; int error;
DB* status_db = NULL; DB* status_db = NULL;
DBC* status_cursor = NULL; DBC* status_cursor = NULL;
...@@ -7196,7 +7197,14 @@ int ha_tokudb::delete_or_rename_table (const char* from_name, const char* to_nam ...@@ -7196,7 +7197,14 @@ int ha_tokudb::delete_or_rename_table (const char* from_name, const char* to_nam
memset(&curr_val, 0, sizeof(curr_val)); memset(&curr_val, 0, sizeof(curr_val));
pthread_mutex_lock(&tokudb_meta_mutex); pthread_mutex_lock(&tokudb_meta_mutex);
error = txn_begin(db_env, 0, &txn, 0, ha_thd()); DB_TXN *parent_txn = NULL;
tokudb_trx_data *trx = NULL;
trx = (tokudb_trx_data *) thd_data_get(thd, tokudb_hton->slot);
if (thd_sql_command(ha_thd()) == SQLCOM_CREATE_TABLE && trx && trx->sub_sp_level) {
parent_txn = trx->sub_sp_level;
}
error = txn_begin(db_env, parent_txn, &txn, 0, thd);
if (error) { goto cleanup; } if (error) { goto cleanup; }
// //
......
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