summaryrefslogtreecommitdiff
path: root/sql/ha_innodb.cc
diff options
context:
space:
mode:
authorunknown <heikki@hundin.mysql.fi>2005-08-31 14:17:05 +0300
committerunknown <heikki@hundin.mysql.fi>2005-08-31 14:17:05 +0300
commit138e44b87384f3290c144ec654e6ef0a1f8b19d2 (patch)
treea42982c865eca67155a348212d9b979557232e30 /sql/ha_innodb.cc
parentf17853cb8512ee857e5617f9141e886b4cf74f60 (diff)
downloadmariadb-git-138e44b87384f3290c144ec654e6ef0a1f8b19d2.tar.gz
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
Diffstat (limited to 'sql/ha_innodb.cc')
-rw-r--r--sql/ha_innodb.cc15
1 files changed, 15 insertions, 0 deletions
diff --git a/sql/ha_innodb.cc b/sql/ha_innodb.cc
index e8279982da5..b4e5092ee4a 100644
--- a/sql/ha_innodb.cc
+++ b/sql/ha_innodb.cc
@@ -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 */