Apply InnoDB snapshot ss923

Fixes:
- Bug #18077: InnoDB uses full explicit table locks in stored FUNCTION
parent 7714fea9
...@@ -6563,7 +6563,8 @@ ha_innobase::store_lock( ...@@ -6563,7 +6563,8 @@ ha_innobase::store_lock(
&& lock_type != TL_IGNORE)) { && lock_type != TL_IGNORE)) {
/* The OR cases above are in this order: /* The OR cases above are in this order:
1) MySQL is doing LOCK TABLES ... READ LOCAL, or 1) MySQL is doing LOCK TABLES ... READ LOCAL, or we
are processing a stored procedure or function, or
2) (we do not know when TL_READ_HIGH_PRIORITY is used), or 2) (we do not know when TL_READ_HIGH_PRIORITY is used), or
3) this is a SELECT ... IN SHARE MODE, or 3) this is a SELECT ... IN SHARE MODE, or
4) we are doing a complex SQL statement like 4) we are doing a complex SQL statement like
...@@ -6625,7 +6626,8 @@ ha_innobase::store_lock( ...@@ -6625,7 +6626,8 @@ ha_innobase::store_lock(
single transaction stored procedure call deterministic single transaction stored procedure call deterministic
(if it does not use a consistent read). */ (if it does not use a consistent read). */
if (lock_type == TL_READ && thd->in_lock_tables) { if (lock_type == TL_READ
&& thd->lex->sql_command == SQLCOM_LOCK_TABLES) {
/* We come here if MySQL is processing LOCK TABLES /* We come here if MySQL is processing LOCK TABLES
... READ LOCAL. MyISAM under that table lock type ... READ LOCAL. MyISAM under that table lock type
reads the table as it was at the time the lock was reads the table as it was at the time the lock was
...@@ -6684,8 +6686,7 @@ ha_innobase::store_lock( ...@@ -6684,8 +6686,7 @@ ha_innobase::store_lock(
(MySQL does have thd->in_lock_tables TRUE there). */ (MySQL does have thd->in_lock_tables TRUE there). */
if (lock_type == TL_READ_NO_INSERT if (lock_type == TL_READ_NO_INSERT
&& (!thd->in_lock_tables && thd->lex->sql_command != SQLCOM_LOCK_TABLES) {
|| thd->lex->sql_command == SQLCOM_CALL)) {
lock_type = TL_READ; lock_type = TL_READ;
} }
......
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