Commit 138e44b8 authored by unknown's avatar unknown
Browse files

ha_innodb.cc:

  Fix bug #12852 : do not increment the open handle count to a table if the table does not have an .ibd file and InnoDB decides to return an error from the ::open() function; then the table can be dropped even if the user has tried to open it


sql/ha_innodb.cc:
  Fix bug #12852 : do not increment the open handle count to a table if the table does not have an .ibd file and InnoDB decides to return an error from the ::open() function; then the table can be dropped even if the user has tried to open it
parent f17853cb
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -1651,6 +1651,8 @@ ha_innobase::open(
    		my_free((char*) upd_buff, MYF(0));
    		my_errno = ENOENT;

		dict_table_decrement_handle_count(ib_table);

    		DBUG_RETURN(1);
  	}

@@ -5439,6 +5441,19 @@ ha_innobase::store_lock(

	if (lock_type != TL_IGNORE && lock.type == TL_UNLOCK) {

		if (lock_type == TL_READ && thd->in_lock_tables) {
			/* We come here if MySQL is processing LOCK TABLES
			... READ LOCAL. MyISAM under that table lock type
			reads the table as it was at the time the lock was
			granted (new inserts are allowed, but not seen by the
			reader). To get a similar effect on an InnoDB table,
			we must use LOCK TABLES ... READ. We convert the lock
			type here, so that for InnoDB, READ LOCAL is
			equivalent to READ. */

			lock_type = TL_READ_NO_INSERT;
		}

    		/* If we are not doing a LOCK TABLE or DISCARD/IMPORT
		TABLESPACE, then allow multiple writers */