diff options
author | Sergey Vojtovich <svoj@sun.com> | 2010-01-22 13:55:50 +0400 |
---|---|---|
committer | Sergey Vojtovich <svoj@sun.com> | 2010-01-22 13:55:50 +0400 |
commit | 6382f05c5d2d4f350d3ec5f2a4adb286eba16332 (patch) | |
tree | 2a8d9278c33eec78c57b09cfd953dddf8e385163 /storage | |
parent | 0482b6ebca43fa168550005ecb7f94e3c0729923 (diff) | |
download | mariadb-git-6382f05c5d2d4f350d3ec5f2a4adb286eba16332.tar.gz |
Applying InnoDB snapshot, fixes BUG#49238.
Detailed revision comments:
r6421 | jyang | 2010-01-12 07:59:16 +0200 (Tue, 12 Jan 2010) | 8 lines
branches/5.1: Fix bug #49238: Creating/Dropping a temporary table
while at 1023 transactions will cause assert. Handle possible
DB_TOO_MANY_CONCURRENT_TRXS when deleting metadata in
row_drop_table_for_mysql().
rb://220, approved by Marko
Diffstat (limited to 'storage')
-rw-r--r-- | storage/innobase/row/row0mysql.c | 32 |
1 files changed, 23 insertions, 9 deletions
diff --git a/storage/innobase/row/row0mysql.c b/storage/innobase/row/row0mysql.c index 4fcb1fbf9f2..f7156403247 100644 --- a/storage/innobase/row/row0mysql.c +++ b/storage/innobase/row/row0mysql.c @@ -3245,19 +3245,13 @@ check_next_foreign: "END;\n" , FALSE, trx); - if (err != DB_SUCCESS) { - ut_a(err == DB_OUT_OF_FILE_SPACE); - - err = DB_MUST_GET_MORE_FILE_SPACE; - - row_mysql_handle_errors(&err, trx, NULL, NULL); - - ut_error; - } else { + switch (err) { ibool is_path; const char* name_or_path; mem_heap_t* heap; + case DB_SUCCESS: + heap = mem_heap_create(200); /* Clone the name, in case it has been allocated @@ -3322,7 +3316,27 @@ check_next_foreign: } mem_heap_free(heap); + break; + + case DB_TOO_MANY_CONCURRENT_TRXS: + /* Cannot even find a free slot for the + the undo log. We can directly exit here + and return the DB_TOO_MANY_CONCURRENT_TRXS + error. */ + break; + + case DB_OUT_OF_FILE_SPACE: + err = DB_MUST_GET_MORE_FILE_SPACE; + + row_mysql_handle_errors(&err, trx, NULL, NULL); + + /* Fall through to raise error */ + + default: + /* No other possible error returns */ + ut_error; } + funct_exit: trx_commit_for_mysql(trx); |