Commit 644692fe authored by Vasil Dimov's avatar Vasil Dimov

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

parents 26cc1a4b 35fc7303
...@@ -583,13 +583,13 @@ thd_is_select( ...@@ -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( ...@@ -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( ...@@ -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( ...@@ -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);
......
...@@ -1666,7 +1666,7 @@ row_merge( ...@@ -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( ...@@ -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));
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment