Merge mysql-5.1-innodb from bk-internal to my local repo

This commit is contained in:
Vasil Dimov 2010-06-18 11:51:55 +03:00
commit c66ce15fe3
2 changed files with 15 additions and 4 deletions

View file

@ -583,13 +583,13 @@ thd_is_select(
/************************************************************************ /************************************************************************
Obtain the InnoDB transaction of a MySQL thread. */ Obtain the InnoDB transaction of a MySQL thread. */
inline inline
trx_t*& trx_t*
thd_to_trx( thd_to_trx(
/*=======*/ /*=======*/
/* out: reference to transaction pointer */ /* out: reference to transaction pointer */
THD* thd) /* in: MySQL thread */ THD* thd) /* in: MySQL thread */
{ {
return(*(trx_t**) thd_ha_data(thd, innodb_hton_ptr)); return((trx_t*) thd_get_ha_data(thd, innodb_hton_ptr));
} }
/************************************************************************ /************************************************************************
@ -1164,7 +1164,7 @@ check_trx_exists(
/* out: InnoDB transaction handle */ /* out: InnoDB transaction handle */
THD* thd) /* in: user thread handle */ THD* thd) /* in: user thread handle */
{ {
trx_t*& trx = thd_to_trx(thd); trx_t* trx = thd_to_trx(thd);
ut_ad(thd == current_thd); ut_ad(thd == current_thd);
@ -1178,6 +1178,9 @@ check_trx_exists(
/* Update the info whether we should skip XA steps that eat /* Update the info whether we should skip XA steps that eat
CPU time */ CPU time */
trx->support_xa = THDVAR(thd, support_xa); trx->support_xa = THDVAR(thd, support_xa);
/* We have a new trx, register with the thread handle */
thd_set_ha_data(thd, innodb_hton_ptr, trx);
} else { } else {
if (trx->magic_n != TRX_MAGIC_N) { if (trx->magic_n != TRX_MAGIC_N) {
mem_analyze_corruption(trx); mem_analyze_corruption(trx);
@ -2482,6 +2485,9 @@ innobase_close_connection(
innobase_rollback_trx(trx); innobase_rollback_trx(trx);
/* Release the lock in thread handler */
thd_set_ha_data(thd, hton, NULL);
thr_local_free(trx->mysql_thread_id); thr_local_free(trx->mysql_thread_id);
trx_free_for_mysql(trx); trx_free_for_mysql(trx);

View file

@ -1666,7 +1666,7 @@ row_merge(
return(DB_CORRUPTION); return(DB_CORRUPTION);
} }
ut_ad(n_run < *num_run); ut_ad(n_run <= *num_run);
*num_run = n_run; *num_run = n_run;
@ -1714,6 +1714,11 @@ row_merge_sort(
/* Record the number of merge runs we need to perform */ /* Record the number of merge runs we need to perform */
num_runs = file->offset; num_runs = file->offset;
/* If num_runs are less than 1, nothing to merge */
if (num_runs <= 1) {
return(error);
}
/* "run_offset" records each run's first offset number */ /* "run_offset" records each run's first offset number */
run_offset = (ulint*) mem_alloc(file->offset * sizeof(ulint)); run_offset = (ulint*) mem_alloc(file->offset * sizeof(ulint));