yoku ts.
yoku0****@gmail*****
2014年 3月 24日 (月) 15:44:32 JST
こんにちは、yoku0825です。 ずいぶん古いスレッドを引っ張り出してみましたが、これ(2.02で河野さんが踏み抜いたバグ)の再現のような気がします。 環境はMySQL 5.6.16(Oracleビルドのrpm)+ Groonga 4.0.0(yumリポジトリ)+ Mroonga 4.00(手でmake)でした。 (フルテキストインデックスでない)複合インデックスを張ったカラムに対してLOAD DATA INFILEをかけるとクラッシュします。 LOAD DATAの手前でDISABLE KEYS, LOAD後にENABLE KEYSなどとすると、ENABLE KEYSしている最中でクラッシュします。 バックトレースと、再現方法は↓においてあります。 https://gist.github.com/yoku0825/9735203 テストケースは(4バイトINT+ 32桁VARCHAR* 3バイトUTF-8)* 300万行ですが、100万行くらいだと落ちませんでした。 ご確認いただけないでしょうか? ( ´-`).oO(これ、容量肥大化対策のブランチを試そうと思って本番データをmysqldumpから戻してたら踏み抜きました。。テストケース作るのに手間取った。。 yoku0825 2012年5月24日 4:42 kentoku <kento****@gmail*****>: > 斯波です。 > > お待たせして申し訳ありません。 > 再現確認を継続的に行ってはいるのですが、残念ながらまだ再現は > 確認できていない状態です。 > > もしできましたら、現象が発生している環境のmy.cnfを頂くことは > できませんでしょうか? > また、切り分けの為「overcommit_memory」の設定がどうなっているか > ご確認頂けませんでしょうか? > > どうぞ、よろしくお願いいたします。 > > > 2012年5月21日 10:06 Kouhei Sutou <kou****@clear*****>: > > 須藤です。 > > > > In <20120****@gmo-m*****> > > "[groonga-dev,00889] Re: mroonga 2.02クラッシュ" on Fri, 18 May 2012 > 17:53:23 +0900, > > 河野 隆志 <takas****@gmo-m*****> wrote: > > > >> REPLACEやUPDATE文は現在修正中ですが、並行して色々試してたら > >> 別の問題が出てきました。 > > > > おぉ。。。 > > > >> 例のテーブルに通常のマルチカラムインデックスを作成しようとしたところ、 > >> 下記エラーがでて作成できませんでした。 > >> mroogna> ALTER TABLE table_name ADD KEY `index_name` > (`rdate`,`gs_id`,`flag5`); > >> ERROR 1169 (23000): Can't write, because of unique constraint, to table > 'table_name' > >> > >> 定義は変えずに空のテーブルで試すとOKで、StorageEngineをInnoDBに > >> したテーブルで試してもOKで、StorageEngineがmroongaで、 > >> 既にデータが入っている場合はNGという感じです。 > > > > 前に教えていただいた情報を元に以下のように試してみたのですが、 > > こちらでは再現しませんでした。。。 > > もしかして、この「すでにデータが入っている場合」というのは、 > > 「何かしらデータが入っている場合」ということではなく、「すで > > に壊れている状態」ということでしょうか?(であれば、私の再現 > > 手順は間違っています。) > > > > mysql> CREATE TABLE `table_name` ( > > -> `id` bigint(20) NOT NULL AUTO_INCREMENT, > > -> `gs_id` tinyint(4) NOT NULL, > > -> `s_id` int(11) NOT NULL, > > -> `type` varchar(16) NOT NULL, > > -> `width` int(11) NOT NULL, > > -> `height` int(11) NOT NULL, > > -> `size` int(11) NOT NULL, > > -> `hash` varchar(64) NOT NULL, > > -> `title` varchar(255) NOT NULL, > > -> `fname` varchar(81) NOT NULL, > > -> `eaddr` varchar(255) DEFAULT NULL, > > -> `rdate` datetime NOT NULL, > > -> `udate` datetime NOT NULL, > > -> `flag1` tinyint(4) DEFAULT '0', > > -> `flag2` tinyint(4) DEFAULT '0', > > -> `flag3` tinyint(4) DEFAULT '0', > > -> `flag4` tinyint(4) DEFAULT '0', > > -> `flag5` tinyint(4) DEFAULT '0', > > -> `flag6` tinyint(4) DEFAULT '0', > > -> `flag7` tinyint(4) DEFAULT '0', > > -> `flag8` tinyint(4) DEFAULT '0', > > -> `flag9` tinyint(4) DEFAULT '0', > > -> `flag10` tinyint(4) DEFAULT '0', > > -> `score1` int(11) DEFAULT '0', > > -> `score2` int(11) DEFAULT '0', > > -> `score3` int(11) DEFAULT '0', > > -> `score4` int(11) DEFAULT '0', > > -> `score5` int(11) DEFAULT '0', > > -> `score6` int(11) DEFAULT '0', > > -> `score7` int(11) DEFAULT '0', > > -> `score8` int(11) DEFAULT '0', > > -> `score9` int(11) DEFAULT '0', > > -> `score10` int(11) DEFAULT '0', > > -> `tags` varchar(255) DEFAULT NULL, > > -> `text` text, > > -> `server` tinyint(4) NOT NULL, > > -> `dir` tinyint(4) NOT NULL, > > -> `uid` varchar(255) NOT NULL, > > -> PRIMARY KEY (`id`), > > -> KEY `index1` (`fname`), > > -> KEY `index2` (`rdate`,`gs_id`,`flag5`), > > -> KEY `index3` (`s_id`,`gs_id`,`rdate`), > > -> FULLTEXT KEY `fu_index1` (`title`,`tags`,`text`) > > -> ) ENGINE=mroonga DEFAULT CHARSET=utf8; > > Query OK, 0 rows affected (1.87 sec) > > > > mysql> REPLACE INTO > > -> table_name ( > > -> id, > > -> gs_id, > > -> s_id, > > -> type, > > -> width, > > -> height, > > -> size, > > -> hash, > > -> title, > > -> fname, > > -> eaddr, > > -> rdate, > > -> udate, > > -> flag2, > > -> flag5, > > -> score5, > > -> tags, > > -> dir, > > -> uid, > > -> server) > > -> VALUES ( > > -> '12345678', > > -> '1', > > -> '123456', > > -> 'jpeg', > > -> '120', > > -> '120', > > -> '12345', > > -> 'hashhashhashhashhashhashhashhashhashhashhashhashhas', > > -> '河野隆志', > > -> 'ja', > > -> 'takas****@gmo-m*****', > > -> '2012-05-05 13:25:46', > > -> NOW(), > > -> '1', > > -> '0', > > -> '1', > > -> '', > > -> '0', > > -> 'kawano2012', > > -> 0); > > Query OK, 1 row affected (0.01 sec) > > > > mysql> SELECT COUNT(*) FROM table_name; > > +----------+ > > | COUNT(*) | > > +----------+ > > | 1 | > > +----------+ > > 1 row in set (0.00 sec) > > > > mysql> ALTER TABLE table_name ADD KEY `index_name` > (`rdate`,`gs_id`,`flag5`); > > Query OK, 0 rows affected (0.20 sec) > > Records: 0 Duplicates: 0 Warnings: 0 > > > >> 文面からみてユニーク制約関連ぽいのでUNIQUE KEYでマルチカラムインデックス > >> をALTER TABLEで張ろうとしたところ、エラーが出ないのですが、例のクラッシュ > >> が100%発生します。 > > > > とすると、これが再現できれば解決に繋がりそうです! > > > >> 既にデータがあるテーブルにマルチカラムインデックスが張れないのはバグ? > >> なんでしょうか? > > > > いえ、張れるはずです。 > > こちらの再現手順と何が違うのかしら。。。 > > > > > > -- > > 須藤 功平 <kou****@clear*****> > > 株式会社クリアコード <http://www.clear-code.com/> (03-6231-7270) > > > > groongaサポート: > > http://groonga.org/ja/support/ > > プログラミングが好きなソフトウェア開発者を募集中: > > http://www.clear-code.com/recruitment/ > > > > _______________________________________________ > > groonga-dev mailing list > > groon****@lists***** > > http://lists.sourceforge.jp/mailman/listinfo/groonga-dev > > _______________________________________________ > groonga-dev mailing list > groon****@lists***** > http://lists.sourceforge.jp/mailman/listinfo/groonga-dev >