Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@yoku0825
Last active January 4, 2016 15:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save yoku0825/3a0f5adeba0be3aeb32f to your computer and use it in GitHub Desktop.
Save yoku0825/3a0f5adeba0be3aeb32f to your computer and use it in GitHub Desktop.
mysql56> DROP DATABASE IF EXISTS mroonga;
Query OK, 1 row affected (0.02 sec)
mysql56> CREATE DATABASE mroonga;
Query OK, 1 row affected (0.00 sec)
mysql56> CREATE TABLE mroonga.t1 (num serial, val varchar(32), FULLTEXT KEY(val)) Engine= mroonga;
Query OK, 0 rows affected (0.06 sec)
mysql56> INSERT INTO mroonga.t1 VALUES (1, 'まごまごしている'), (2, 'もぞもぞしている');
Query OK, 2 rows affected (0.01 sec)
Records: 2 Duplicates: 0 Warnings: 0
mysql56> SELECT * FROM mroonga.t1;
+-----+--------------------------+
| num | val |
+-----+--------------------------+
| 1 | まごまごしている |
| 2 | もぞもぞしている |
+-----+--------------------------+
2 rows in set (0.02 sec)
mysql56> SELECT * FROM mroonga.t1 WHERE MATCH(val) AGAINST('まご' IN BOOLEAN MODE);
+-----+--------------------------+
| num | val |
+-----+--------------------------+
| 1 | まごまごしている |
+-----+--------------------------+
1 row in set (0.02 sec)
mysql56> SELECT * FROM mroonga.t1 WHERE MATCH(val) AGAINST('している' IN BOOLEAN MODE);
+-----+--------------------------+
| num | val |
+-----+--------------------------+
| 1 | まごまごしている |
| 2 | もぞもぞしている |
+-----+--------------------------+
2 rows in set (0.00 sec)
$ /usr/groonga/3.1.1/bin/groonga /usr/mysql/5.6.15/data/mroonga.mrn
> table_list
[[0,1390786034.37996,0.00156998634338379],[[["id","UInt32"],["name","ShortText"],["path","ShortText"],["flags","ShortText"],["domain","ShortText"],["range","ShortText"],["default_tokenizer","ShortText"],["normalizer","ShortText"]],[259,"t1","/usr/mysql/5.6.15/data/mroonga.mrn.0000103","TABLE_PAT_KEY|PERSISTENT","UInt64",null,null,null],[262,"t1-val","/usr/mysql/5.6.15/data/mroonga.mrn.0000106","TABLE_PAT_KEY|PERSISTENT","ShortText",null,"TokenBigram","NormalizerMySQLGeneralCI"]]]
> select t1
[[0,1390786040.35592,0.0125136375427246],[[[2],[["_id","UInt32"],["_key","UInt64"],["num","UInt64"],["val","ShortText"]],[1,1,1,"まごまごしている"],[2,2,2,"もぞもぞしている"]]]]
> select t1-val
[[0,1390786044.07993,0.000380754470825195],[[[10],[["_id","UInt32"],["_key","ShortText"],["index","t1"]],[6,"いる",10],[3,"ご し",1],[2,"ごま",1],[4,"して",8],[10,"ぞし",1],[9,"ぞも",1],[5,"てい",9],[1,"まご",3],[8,"もぞ",3],[7,"る",11]]]]
> delete t1-val --filter '_key== "まご"'
[[0,1390786048.26089,0.00156807899475098],true]
> select t1
[[0,1390786051.82593,0.000292778015136719],[[[2],[["_id","UInt32"],["_key","UInt64"],["num","UInt64"],["val","ShortText"]],[1,1,1,""],[2,2,2,"もぞもぞしている"]]]]
> select t1-val
[[0,1390786056.2459,0.000264883041381836],[[[9],[["_id","UInt32"],["_key","ShortText"],["index","t1"]],[6,"いる",10],[3,"ごし",0],[2,"ごま",0],[4,"して",8],[10,"ぞし",1],[9,"ぞも",1],[5,"てい",9],[8,"もぞ",3],[7,"る",11]]]]
mysql56> SELECT * FROM mroonga.t1;
+-----+--------------------------+
| num | val |
+-----+--------------------------+
| 1 | まごまごしている |
| 2 | もぞもぞしている |
+-----+--------------------------+
2 rows in set (0.01 sec)
mysql56> SELECT * FROM mroonga.t1 WHERE MATCH(val) AGAINST('まご' IN BOOLEAN MODE);
+-----+--------------------------+
| num | val |
+-----+--------------------------+
| 1 | まごまごしている |
+-----+--------------------------+
1 row in set (0.00 sec)
mysql56> SELECT * FROM mroonga.t1 WHERE MATCH(val) AGAINST('している' IN BOOLEAN MODE);
+-----+--------------------------+
| num | val |
+-----+--------------------------+
| 1 | まごまごしている |
| 2 | もぞもぞしている |
+-----+--------------------------+
2 rows in set (0.00 sec)
mysql56> FLUSH TABLES;
Query OK, 0 rows affected (0.01 sec)
mysql56> SELECT * FROM mroonga.t1;
+-----+--------------------------+
| num | val |
+-----+--------------------------+
| 1 | |
| 2 | もぞもぞしている |
+-----+--------------------------+
2 rows in set (0.02 sec)
mysql56> SELECT * FROM mroonga.t1 WHERE MATCH(val) AGAINST('まご' IN BOOLEAN MODE);
Empty set (0.01 sec)
mysql56> SELECT * FROM mroonga.t1 WHERE MATCH(val) AGAINST('している' IN BOOLEAN MODE);
+-----+--------------------------+
| num | val |
+-----+--------------------------+
| 2 | もぞもぞしている |
+-----+--------------------------+
1 row in set (0.00 sec)
mysql56> DROP DATABASE IF EXISTS mroonga;
Query OK, 1 row affected (0.01 sec)
mysql56> CREATE DATABASE mroonga;
Query OK, 1 row affected (0.00 sec)
mysql56> CREATE TABLE mroonga.t1 (num serial, val varchar(32), FULLTEXT KEY(val)) Engine= mroonga Comment= 'Engine "MyISAM"';
Query OK, 0 rows affected (0.04 sec)
mysql56> INSERT INTO mroonga.t1 VALUES (1, 'まごまごしている'), (2, 'もぞもぞしている');
Query OK, 2 rows affected (0.02 sec)
Records: 2 Duplicates: 0 Warnings: 0
mysql56> SELECT * FROM mroonga.t1;
+-----+--------------------------+
| num | val |
+-----+--------------------------+
| 1 | まごまごしている |
| 2 | もぞもぞしている |
+-----+--------------------------+
2 rows in set (0.00 sec)
mysql56> SELECT * FROM mroonga.t1 WHERE MATCH(val) AGAINST('まご' IN BOOLEAN MODE);
+-----+--------------------------+
| num | val |
+-----+--------------------------+
| 1 | まごまごしている |
+-----+--------------------------+
1 row in set (0.01 sec)
mysql56> SELECT * FROM mroonga.t1 WHERE MATCH(val) AGAINST('している' IN BOOLEAN MODE);
+-----+--------------------------+
| num | val |
+-----+--------------------------+
| 1 | まごまごしている |
| 2 | もぞもぞしている |
+-----+--------------------------+
2 rows in set (0.00 sec)
$ /usr/groonga/3.1.1/bin/groonga /usr/mysql/5.6.15/data/mroonga.mrn
> table_list
[[0,1390786519.89899,0.0015709400177002],[[["id","UInt32"],["name","ShortText"],["path","ShortText"],["flags","ShortText"],["domain","ShortText"],["range","ShortText"],["default_tokenizer","ShortText"],["normalizer","ShortText"]],[259,"t1","/usr/mysql/5.6.15/data/mroonga.mrn.0000103","TABLE_HASH_KEY|PERSISTENT","ShortText",null,null,null],[260,"t1-val","/usr/mysql/5.6.15/data/mroonga.mrn.0000104","TABLE_PAT_KEY|PERSISTENT","ShortText",null,"TokenBigram","NormalizerMySQLGeneralCI"]]]
> select t1
[[0,1390786527.83789,0.000520467758178711],[[[2],[["_id","UInt32"],["_key","ShortText"]],[1,"\u0001"],[2,"\u0002"]]]]
> select t1-val
[[0,1390786531.64992,0.000424861907958984],[[[10],[["_id","UInt32"],["_key","ShortText"],["index","t1"]],[6,"いる",10],[3,"ご し",1],[2,"ごま",1],[4,"して",8],[10,"ぞし",1],[9,"ぞも",1],[5,"てい",9],[1,"まご",3],[8,"もぞ",3],[7,"る",11]]]]
> delete t1-val --filter '_key== "まご"'
[[0,1390786535.62207,0.00107884407043457],true]
> select t1
[[0,1390786538.69091,0.000254631042480469],[[[2],[["_id","UInt32"],["_key","ShortText"]],[1,"\u0001"],[2,"\u0002"]]]]
> select t1-val
[[0,1390786542.07993,0.000287055969238281],[[[9],[["_id","UInt32"],["_key","ShortText"],["index","t1"]],[6,"いる",10],[3,"ごし",1],[2,"ごま",1],[4,"して",8],[10,"ぞし",1],[9,"ぞも",1],[5,"てい",9],[8,"もぞ",3],[7,"る",11]]]]
mysql56> SELECT * FROM mroonga.t1;
+-----+--------------------------+
| num | val |
+-----+--------------------------+
| 1 | まごまごしている |
| 2 | もぞもぞしている |
+-----+--------------------------+
2 rows in set (0.00 sec)
mysql56> SELECT * FROM mroonga.t1 WHERE MATCH(val) AGAINST('まご' IN BOOLEAN MODE);
+-----+--------------------------+
| num | val |
+-----+--------------------------+
| 1 | まごまごしている |
+-----+--------------------------+
1 row in set (0.00 sec)
mysql56> SELECT * FROM mroonga.t1 WHERE MATCH(val) AGAINST('している' IN BOOLEAN MODE);
+-----+--------------------------+
| num | val |
+-----+--------------------------+
| 1 | まごまごしている |
| 2 | もぞもぞしている |
+-----+--------------------------+
2 rows in set (0.00 sec)
mysql56> FLUSH TABLES;
Query OK, 0 rows affected (0.01 sec)
mysql56> SELECT * FROM mroonga.t1;
+-----+--------------------------+
| num | val |
+-----+--------------------------+
| 1 | まごまごしている |
| 2 | もぞもぞしている |
+-----+--------------------------+
2 rows in set (0.01 sec)
mysql56> SELECT * FROM mroonga.t1 WHERE MATCH(val) AGAINST('まご' IN BOOLEAN MODE);
Empty set (0.00 sec)
mysql56> SELECT * FROM mroonga.t1 WHERE MATCH(val) AGAINST('している' IN BOOLEAN MODE);
+-----+--------------------------+
| num | val |
+-----+--------------------------+
| 1 | まごまごしている |
| 2 | もぞもぞしている |
+-----+--------------------------+
2 rows in set (0.00 sec)
@yoku0825
Copy link
Author

  • まっさらなデータベースとテーブルを作成
  • groongaコマンドでt1-valテーブル上のキーを削除
  • 何故かt1テーブル上のvalカラムだけが消える
  • MySQLからは何故かまだnum= 1のvalが見える
  • FLUSH TABLESで開きなおすとMySQLからも見えなくなる

@yoku0825
Copy link
Author

・FLUSH TABLESが必要なところを除いて、ラッパーモードでの動作は期待通り。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment