From df727fbb657d1b55c390b81d220bef0fa1d9e894 Mon Sep 17 00:00:00 2001
From: "ram@gw.mysql.r18.ru" <>
Date: Mon, 21 Jun 2004 15:17:07 +0500
Subject: [PATCH] a fix (bug #4198: Incorrect key file for table).

---
 mysql-test/r/delete.result | 10 ++++++++++
 mysql-test/t/delete.test   | 11 +++++++++++
 sql/sql_select.cc          |  3 ++-
 3 files changed, 23 insertions(+), 1 deletion(-)

diff --git a/mysql-test/r/delete.result b/mysql-test/r/delete.result
index f1acc5d2dfa..c6b7a40214d 100644
--- a/mysql-test/r/delete.result
+++ b/mysql-test/r/delete.result
@@ -120,3 +120,13 @@ a	b
 0	10
 1	11
 drop table t11, t12, t2;
+create table t1 (a int, b int, unique key (a), key (b));
+insert into t1 values (3, 3), (7, 7);
+delete t1 from t1 where a = 3;
+check table t1;
+Table	Op	Msg_type	Msg_text
+test.t1	check	status	OK
+select * from t1;
+a	b
+7	7
+drop table t1;
diff --git a/mysql-test/t/delete.test b/mysql-test/t/delete.test
index e370b545eff..56c8ce77627 100644
--- a/mysql-test/t/delete.test
+++ b/mysql-test/t/delete.test
@@ -98,3 +98,14 @@ select * from t11;
 delete ignore from t11 where t11.b <> (select b from t2 where t11.a < t2.a);
 select * from t11;
 drop table t11, t12, t2;
+
+#
+# Bug #4198: deletion and KEYREAD
+#
+
+create table t1 (a int, b int, unique key (a), key (b));
+insert into t1 values (3, 3), (7, 7);
+delete t1 from t1 where a = 3;
+check table t1;
+select * from t1;
+drop table t1;
diff --git a/sql/sql_select.cc b/sql/sql_select.cc
index b32cb228c72..d6e76ce81d8 100644
--- a/sql/sql_select.cc
+++ b/sql/sql_select.cc
@@ -5972,7 +5972,8 @@ join_read_const_table(JOIN_TAB *tab, POSITION *pos)
   else
   {
     if (!table->key_read && table->used_keys.is_set(tab->ref.key) &&
-	!table->no_keyread)
+	!table->no_keyread &&
+        (int) table->reginfo.lock_type <= (int) TL_READ_HIGH_PRIORITY)
     {
       table->key_read=1;
       table->file->extra(HA_EXTRA_KEYREAD);
-- 
2.30.9