[前][次][番号順一覧][スレッド一覧]

mysql:3760

From: <takeshi@xxxxxxxxxx>
Date: Wed, 13 Jun 2001 17:35:54 +0900
Subject: [mysql 03760] Re: BDB テーブルの SELECT 結果 0 件で PANIC

At Tue, 12 Jun 2001 14:58:15 +0900,
Noriyuki Sakimura wrote:

>  複数のBerkeleyDBタイプのテーブルを複数結合して検索するSELECT文を
> 実行しようとしているのですが、検索結果が0件になるようなパターンを
> 実行すると、初回は0件が返ってきますが、再度実行すると
> 
> ERROR 1015: Can't lock file (errno: -30989)
> 
> が発生し、それ以降mysqldを再起動するまで正常動作しなくなります。この
> SQL文で参照していないテーブルも参照できなくなり、ERROR 1016: Can't
> open file が発生します。
> 
>  ホスト名.err ログには、初回の実行時に
> 010612 13:41:56  bdb:  PANIC: Invalid argument
> と出力されます。


詳細なレポートがあると助かります。ありがとうございます
以下のパッチでいかがでしょう?

 村上 毅  takeshi@xxxxxxxxxx

=== patch ===
diff -ru mysql-3.23.38.orig/sql/sql_select.cc mysql-3.23.38/sql/sql_select.cc
--- mysql-3.23.38.orig/sql/sql_select.cc	Thu May 10 05:34:37 2001
+++ mysql-3.23.38/sql/sql_select.cc	Wed Jun 13 17:30:35 2001
@@ -400,7 +400,22 @@
     goto err;					/* purecov: inspected */
   }
   if (join.const_tables && !thd->locked_tables)
+  {
+    TABLE **table, **end;
+    for (table=join.table, end=table + join.const_tables ;
+	 table != end;
+	 table++)
+    {
+      /* BDB tables require that we call index_end() before doing an unlock */
+      if ((*table)->key_read)
+      {
+	(*table)->key_read=0;
+	(*table)->file->extra(HA_EXTRA_NO_KEYREAD);
+      }
+      (*table)->file->index_end();
+    }
     mysql_unlock_some_tables(thd, join.table,join.const_tables);
+  }
   if (!conds && join.outer_join)
   {
     /* Handle the case where we have an OUTER JOIN without a WHERE */
@@ -2761,7 +2776,12 @@
     if (send_row)
       result->send_data(fields);
     if (tables)					// Not from do_select()
+    {
+      /* Close open cursors */
+      for (TABLE_LIST *table=tables; table ; table=table->next)
+	table->table->file->index_end();
       result->send_eof();			// Should be safe
+    }
   }
   DBUG_RETURN(0);
 }

[前][次][番号順一覧][スレッド一覧]

      3755 2001-06-12 14:58 [Noriyuki Sakimura <s] BDB テーブルの SELECT 結果 0 件で PANIC 
->    3760 2001-06-13 17:35 ┗[<takeshi@xxxxxxxxxx>]                                       
      3762 2001-06-13 19:06  ┗[崎村 典行 <sakimura@]