summaryrefslogtreecommitdiff
path: root/sql/sql_table.cc
diff options
context:
space:
mode:
authorunknown <vva@eagle.mysql.r18.ru>2004-03-27 00:35:45 +0400
committerunknown <vva@eagle.mysql.r18.ru>2004-03-27 00:35:45 +0400
commitaab1e50e719f1f31629890fad650e9b0290cb906 (patch)
tree023a520ba94e415acedf48d976d399e523da8b05 /sql/sql_table.cc
parent8a6ae8395d789c6b8ad0a0f99454e1c4b709074c (diff)
downloadmariadb-git-aab1e50e719f1f31629890fad650e9b0290cb906.tar.gz
fixed bug #2342
"Running ANALYZE TABLE on bdb table inside a transaction hangs server thread" 1. added new status HA_ADMIN_REJECT and processing of it in mysql_admin_table 2. got ha_berkley::analyze to return HA_ADMIN_REJECT if there are any transactions with the table.. mysql-test/r/bdb-crash.result: added test for bug #2342 "Running ANALYZE TABLE on bdb table inside a transaction hangs server thread" mysql-test/t/bdb-crash.test: added test for bug #2342 "Running ANALYZE TABLE on bdb table inside a transaction hangs server thread" sql/ha_berkeley.cc: fixed bug #2342 "Running ANALYZE TABLE on bdb table inside a transaction hangs server thread" we have to return new status "HA_ADMIN_REJECT" for ha_berkley::analyze if there are any transaction for this table so as bdb documentation says: "The DB->stat method cannot be transaction protected" sql/handler.h: added new status of table info "HA_ADMIN_REJECT" We have to return this status for bdb tables which have any active transactions so as bdb-documentation says: "The DB->stat method cannot be transaction-protected" sql/sql_table.cc: added processing of the new status HA_ADMIN_REJECT in mysql_admin_table (reason to add this status is explained in comment for commit on sql/handler.h)
Diffstat (limited to 'sql/sql_table.cc')
-rw-r--r--sql/sql_table.cc6
1 files changed, 6 insertions, 0 deletions
diff --git a/sql/sql_table.cc b/sql/sql_table.cc
index 48151ef55b9..7507ab16968 100644
--- a/sql/sql_table.cc
+++ b/sql/sql_table.cc
@@ -1330,6 +1330,12 @@ static int mysql_admin_table(THD* thd, TABLE_LIST* tables,
net_store_data(packet, "Operation failed");
break;
+ case HA_ADMIN_REJECT:
+ net_store_data(packet,"status");
+ net_store_data(packet,"Operation need committed state");
+ open_for_modify= false;
+ break;
+
case HA_ADMIN_ALREADY_DONE:
net_store_data(packet, "status");
net_store_data(packet, "Table is already up to date");