1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-30 16:24:05 +03:00

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
This commit is contained in:
heikki@hundin.mysql.fi
2005-08-31 14:17:05 +03:00
parent b5c01d7971
commit 9aa5a86a80

View File

@ -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 */