summaryrefslogtreecommitdiff
path: root/sql/ha_berkeley.cc
diff options
context:
space:
mode:
authorunknown <jimw@mysql.com>2005-12-05 18:07:48 -0800
committerunknown <jimw@mysql.com>2005-12-05 18:07:48 -0800
commitda8150d50803956b88ee766890de8e51b68d0f87 (patch)
tree8b4789d929be494dc75e400f6a25bba4fb57ccf4 /sql/ha_berkeley.cc
parent20445b49774a0091717e55818bfd0dfc27bfe193 (diff)
parent2c8545bfdb905dea66c95e5183060c843fd5d9d1 (diff)
downloadmariadb-git-da8150d50803956b88ee766890de8e51b68d0f87.tar.gz
Merge mysql.com:/home/jimw/my/mysql-5.1-14671
into mysql.com:/home/jimw/my/mysql-5.1-clean sql/ha_berkeley.cc: Auto merged
Diffstat (limited to 'sql/ha_berkeley.cc')
-rw-r--r--sql/ha_berkeley.cc38
1 files changed, 2 insertions, 36 deletions
diff --git a/sql/ha_berkeley.cc b/sql/ha_berkeley.cc
index ea9557d0c1d..196665293f4 100644
--- a/sql/ha_berkeley.cc
+++ b/sql/ha_berkeley.cc
@@ -2287,40 +2287,6 @@ int ha_berkeley::analyze(THD* thd, HA_CHECK_OPT* check_opt)
berkeley_trx_data *trx=(berkeley_trx_data *)thd->ha_data[berkeley_hton.slot];
DBUG_ASSERT(trx);
- /*
- Original bdb documentation says:
- "The DB->stat method cannot be transaction-protected.
- For this reason, it should be called in a thread of
- control that has no open cursors or active transactions."
- So, let's check if there are any changes have been done since
- the beginning of the transaction..
- */
-
- if (!db_env->txn_stat(db_env, &txn_stat_ptr, 0) &&
- txn_stat_ptr && txn_stat_ptr->st_nactive>=2)
- {
- DB_TXN_ACTIVE *atxn_stmt= 0, *atxn_all= 0;
-
- u_int32_t all_id= trx->all->id(trx->all);
- u_int32_t stmt_id= trx->stmt->id(trx->stmt);
-
- DB_TXN_ACTIVE *cur= txn_stat_ptr->st_txnarray;
- DB_TXN_ACTIVE *end= cur + txn_stat_ptr->st_nactive;
- for (; cur!=end && (!atxn_stmt || !atxn_all); cur++)
- {
- if (cur->txnid==all_id) atxn_all= cur;
- if (cur->txnid==stmt_id) atxn_stmt= cur;
- }
-
- if (atxn_stmt && atxn_all &&
- log_compare(&atxn_stmt->lsn,&atxn_all->lsn))
- {
- free(txn_stat_ptr);
- return HA_ADMIN_REJECT;
- }
- free(txn_stat_ptr);
- }
-
for (i=0 ; i < table_share->keys ; i++)
{
if (stat)
@@ -2328,7 +2294,7 @@ int ha_berkeley::analyze(THD* thd, HA_CHECK_OPT* check_opt)
free(stat);
stat=0;
}
- if ((key_file[i]->stat)(key_file[i], NULL, (void*) &stat, 0))
+ if ((key_file[i]->stat)(key_file[i], trx->all, (void*) &stat, 0))
goto err; /* purecov: inspected */
share->rec_per_key[i]= (stat->bt_ndata /
(stat->bt_nkeys ? stat->bt_nkeys : 1));
@@ -2341,7 +2307,7 @@ int ha_berkeley::analyze(THD* thd, HA_CHECK_OPT* check_opt)
free(stat);
stat=0;
}
- if ((file->stat)(file, NULL, (void*) &stat, 0))
+ if ((file->stat)(file, trx->all, (void*) &stat, 0))
goto err; /* purecov: inspected */
}
pthread_mutex_lock(&share->mutex);