diff options
author | unknown <jimw@mysql.com> | 2005-12-05 18:07:48 -0800 |
---|---|---|
committer | unknown <jimw@mysql.com> | 2005-12-05 18:07:48 -0800 |
commit | da8150d50803956b88ee766890de8e51b68d0f87 (patch) | |
tree | 8b4789d929be494dc75e400f6a25bba4fb57ccf4 /sql/ha_berkeley.cc | |
parent | 20445b49774a0091717e55818bfd0dfc27bfe193 (diff) | |
parent | 2c8545bfdb905dea66c95e5183060c843fd5d9d1 (diff) | |
download | mariadb-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.cc | 38 |
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); |