Commit e042a3d2 authored by lenz@mysql.com's avatar lenz@mysql.com
Browse files

Merge lgrimmer@work.mysql.com:/home/bk/mysql

into mysql.com:/space/my/mysql-3.23
parents b507a851 541c40b0
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -393,6 +393,7 @@ struct row_prebuilt_struct {
					an SQL statement: we may have to set
					an intention lock on the table,
					create a consistent read view etc. */
        ibool           mysql_has_locked;
	ibool		clust_index_was_generated;
					/* if the user did not define a
					primary key in MySQL, then Innobase
+1 −0
Original line number Diff line number Diff line
@@ -320,6 +320,7 @@ row_create_prebuilt(
	prebuilt->trx = NULL;

	prebuilt->sql_stat_start = TRUE;
	prebuilt->mysql_has_locked = FALSE;

	prebuilt->index = NULL;
	prebuilt->n_template = 0;
+3 −1
Original line number Diff line number Diff line
@@ -3453,7 +3453,7 @@ ha_innobase::start_stmt(
  prebuilt->hint_no_need_to_fetch_extra_cols = TRUE;
  prebuilt->read_just_key = 0;

  if (prebuilt->select_lock_type == LOCK_NONE) {
  if (!prebuilt->mysql_has_locked) {
          /* This handle is for a temporary table created inside
          this same LOCK TABLES; since MySQL does NOT call external_lock
          in this case, we must use x-row locks inside InnoDB to be
@@ -3510,6 +3510,7 @@ ha_innobase::external_lock(

		thd->transaction.all.innodb_active_trans = 1;
		trx->n_mysql_tables_in_use++;
		prebuilt->mysql_has_locked = TRUE;

		if (thd->tx_isolation == ISO_SERIALIZABLE
		    && prebuilt->select_lock_type == LOCK_NONE) {
@@ -3527,6 +3528,7 @@ ha_innobase::external_lock(
		}
	} else {
		trx->n_mysql_tables_in_use--;
		prebuilt->mysql_has_locked = FALSE;
		auto_inc_counter_for_this_stat = 0;

		if (trx->n_mysql_tables_in_use == 0) {