diff options
author | Vasil Dimov <vasil.dimov@oracle.com> | 2010-07-07 20:13:53 +0300 |
---|---|---|
committer | Vasil Dimov <vasil.dimov@oracle.com> | 2010-07-07 20:13:53 +0300 |
commit | 7c6ba7b4dedcfc21a15075d6445bd2f376f1492b (patch) | |
tree | 03de3fc8023db16ae3120a955aedfef02b9665e3 /innobase | |
parent | 51870d25efa8ac53879f0edbe32729768a851033 (diff) | |
download | mariadb-git-7c6ba7b4dedcfc21a15075d6445bd2f376f1492b.tar.gz |
Merge the fix for Bug#49238 from SVN
(without the unrelated whitespace changes):
------------------------------------------------------------------------
r7009 | jyang | 2010-04-29 20:44:56 +0300 (Thu, 29 Apr 2010) | 6 lines
branches/5.0: Port fix for bug #49238 (Creating/Dropping a temporary
table while at 1023 transactions will cause assert) from 5.1 to
branches/5.1. Separate action for return value DB_TOO_MANY_CONCURRENT_TRXS
from that of DB_MUST_GET_MORE_FILE_SPACE in row_drop_table_for_mysql().
------------------------------------------------------------------------
Diffstat (limited to 'innobase')
-rw-r--r-- | innobase/row/row0mysql.c | 33 |
1 files changed, 23 insertions, 10 deletions
diff --git a/innobase/row/row0mysql.c b/innobase/row/row0mysql.c index 75c54cec4b3..f636b505b6b 100644 --- a/innobase/row/row0mysql.c +++ b/innobase/row/row0mysql.c @@ -3335,20 +3335,13 @@ fputs(" InnoDB: You are trying to drop table ", stderr); err = trx->error_state; - 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, thr, NULL); - - ut_error; - } else { + switch (err) { ibool is_path; const char* name_or_path; + case DB_SUCCESS: space_id = table->space; - + if (table->dir_path_of_temp_table != NULL) { dir_path_of_temp_table = mem_strdup(table->dir_path_of_temp_table); @@ -3407,7 +3400,27 @@ fputs(" InnoDB: You are trying to drop table ", stderr); err = DB_ERROR; } } + 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, thr, NULL); + + /* Fall through to raise error */ + + default: + /* No other possible error returns */ + ut_error; } + funct_exit: trx_commit_for_mysql(trx); |