svnno****@sourc*****
svnno****@sourc*****
2007年 9月 4日 (火) 20:35:32 JST
Revision: 14 http://svn.sourceforge.jp/cgi-bin/viewcvs.cgi?root=tritonn&view=rev&rev=14 Author: mir Date: 2007-09-04 20:35:32 +0900 (Tue, 04 Sep 2007) Log Message: ----------- refactoring for sen_enc_type. the function sen_enc_type was deleted and structure, array, function are added instead of it. M mysql-5.0.45-tritonn-1.0.5/mysql-test/suite/senna/r/senna_cp932.result M mysql-5.0.45-tritonn-1.0.5/mysql-test/suite/senna/r/senna_create.result M mysql-5.0.45-tritonn-1.0.5/mysql-test/suite/senna/r/senna_eucjpms.result M mysql-5.0.45-tritonn-1.0.5/mysql-test/suite/senna/r/senna_sjis.result M mysql-5.0.45-tritonn-1.0.5/mysql-test/suite/senna/r/senna_ujis.result M mysql-5.0.45-tritonn-1.0.5/sql/item_strfunc.cc M mysql-5.0.45-tritonn-1.0.5/sql/ha_myisam.cc M mysql-5.0.45-tritonn-1.0.5/sql/mysql_priv.h Modified Paths: -------------- mysql-5.0.45-tritonn-1.0.5/mysql-test/suite/senna/r/senna_cp932.result mysql-5.0.45-tritonn-1.0.5/mysql-test/suite/senna/r/senna_create.result mysql-5.0.45-tritonn-1.0.5/mysql-test/suite/senna/r/senna_eucjpms.result mysql-5.0.45-tritonn-1.0.5/mysql-test/suite/senna/r/senna_sjis.result mysql-5.0.45-tritonn-1.0.5/mysql-test/suite/senna/r/senna_ujis.result mysql-5.0.45-tritonn-1.0.5/sql/ha_myisam.cc mysql-5.0.45-tritonn-1.0.5/sql/item_strfunc.cc mysql-5.0.45-tritonn-1.0.5/sql/mysql_priv.h Modified: mysql-5.0.45-tritonn-1.0.5/mysql-test/suite/senna/r/senna_cp932.result =================================================================== --- mysql-5.0.45-tritonn-1.0.5/mysql-test/suite/senna/r/senna_cp932.result 2007-08-31 15:51:31 UTC (rev 13) +++ mysql-5.0.45-tritonn-1.0.5/mysql-test/suite/senna/r/senna_cp932.result 2007-09-04 11:35:32 UTC (rev 14) @@ -21,7 +21,7 @@ ) ENGINE=MyISAM DEFAULT CHARSET=cp932 SHOW SENNA STATUS; Table Key_name Column_name Encoding Index_type Normalize Split_alpha Split_digit Split_symbol Initial_n_segments Senna_keys_size Senna_keys_file_size Senna_lexicon_size Senna_lexicon_file_size Senna_inv_seg_size Senna_inv_chunk_size -t1 ft c2 sjis NGRAM ON OFF OFF OFF 512 0 4268032 0 4268032 167936 135168 +t1 ft c2 cp932 NGRAM ON OFF OFF OFF 512 0 4268032 0 4268032 167936 135168 INSERT INTO t1 (c2) VALUES ("世界で最もポピュラーなオープンソースデータベースMySQL"); INSERT INTO t1 (c2) VALUES ("住商情報システムはMySQLのオフィシャルトレーニングと商用ライセンスを提供しております。"); INSERT INTO t1 (c2) VALUES ("他のオープンソースRDBMSと比較して「高速」で「安定」していることに定評があり、世界で600万のMySQLが稼動しています。"); Modified: mysql-5.0.45-tritonn-1.0.5/mysql-test/suite/senna/r/senna_create.result =================================================================== --- mysql-5.0.45-tritonn-1.0.5/mysql-test/suite/senna/r/senna_create.result 2007-08-31 15:51:31 UTC (rev 13) +++ mysql-5.0.45-tritonn-1.0.5/mysql-test/suite/senna/r/senna_create.result 2007-09-04 11:35:32 UTC (rev 14) @@ -171,7 +171,7 @@ ) ENGINE = MyISAM DEFAULT CHARSET cp932; SHOW SENNA STATUS; Table Key_name Column_name Encoding Index_type Normalize Split_alpha Split_digit Split_symbol Initial_n_segments Senna_keys_size Senna_keys_file_size Senna_lexicon_size Senna_lexicon_file_size Senna_inv_seg_size Senna_inv_chunk_size -t1 ft c2 sjis NGRAM ON OFF OFF OFF 512 0 4268032 0 4268032 167936 135168 +t1 ft c2 cp932 NGRAM ON OFF OFF OFF 512 0 4268032 0 4268032 167936 135168 DROP TABLE t1; CREATE TABLE t1 (c1 INT PRIMARY KEY AUTO_INCREMENT, c2 TEXT CHARSET sjis, @@ -187,11 +187,11 @@ ) ENGINE = MyISAM; SHOW SENNA STATUS; Table Key_name Column_name Encoding Index_type Normalize Split_alpha Split_digit Split_symbol Initial_n_segments Senna_keys_size Senna_keys_file_size Senna_lexicon_size Senna_lexicon_file_size Senna_inv_seg_size Senna_inv_chunk_size -t1 ft2 c2 sjis NGRAM ON OFF OFF OFF 512 0 4268032 0 4268032 167936 135168 -t1 ft3 c3 sjis NGRAM ON OFF OFF OFF 512 0 4268032 0 4268032 167936 135168 +t1 ft2 c2 cp932 NGRAM ON OFF OFF OFF 512 0 4268032 0 4268032 167936 135168 +t1 ft3 c3 cp932 NGRAM ON OFF OFF OFF 512 0 4268032 0 4268032 167936 135168 t1 ft4 c4 utf8 NGRAM ON OFF OFF OFF 512 0 4268032 0 4268032 167936 135168 -t1 ft5 c5 euc_jp NGRAM ON OFF OFF OFF 512 0 4268032 0 4268032 167936 135168 -t1 ft6 c6 euc_jp NGRAM ON OFF OFF OFF 512 0 4268032 0 4268032 167936 135168 +t1 ft5 c5 eucjpms NGRAM ON OFF OFF OFF 512 0 4268032 0 4268032 167936 135168 +t1 ft6 c6 eucjpms NGRAM ON OFF OFF OFF 512 0 4268032 0 4268032 167936 135168 DROP TABLE t1; CREATE TABLE t1 (c1 INT PRIMARY KEY AUTO_INCREMENT, c2 TEXT CHARSET sjis, Modified: mysql-5.0.45-tritonn-1.0.5/mysql-test/suite/senna/r/senna_eucjpms.result =================================================================== --- mysql-5.0.45-tritonn-1.0.5/mysql-test/suite/senna/r/senna_eucjpms.result 2007-08-31 15:51:31 UTC (rev 13) +++ mysql-5.0.45-tritonn-1.0.5/mysql-test/suite/senna/r/senna_eucjpms.result 2007-09-04 11:35:32 UTC (rev 14) @@ -21,7 +21,7 @@ ) ENGINE=MyISAM DEFAULT CHARSET=eucjpms SHOW SENNA STATUS; Table Key_name Column_name Encoding Index_type Normalize Split_alpha Split_digit Split_symbol Initial_n_segments Senna_keys_size Senna_keys_file_size Senna_lexicon_size Senna_lexicon_file_size Senna_inv_seg_size Senna_inv_chunk_size -t1 ft c2 euc_jp NGRAM ON OFF OFF OFF 512 0 4268032 0 4268032 167936 135168 +t1 ft c2 eucjpms NGRAM ON OFF OFF OFF 512 0 4268032 0 4268032 167936 135168 INSERT INTO t1 (c2) VALUES ("世界で最もポピュラーなオープンソースデータベースMySQL"); INSERT INTO t1 (c2) VALUES ("住商情報システムはMySQLのオフィシャルトレーニングと商用ライセンスを提供しております。"); INSERT INTO t1 (c2) VALUES ("他のオープンソースRDBMSと比較して「高速」で「安定」していることに定評があり、世界で600万のMySQLが稼動しています。"); Modified: mysql-5.0.45-tritonn-1.0.5/mysql-test/suite/senna/r/senna_sjis.result =================================================================== --- mysql-5.0.45-tritonn-1.0.5/mysql-test/suite/senna/r/senna_sjis.result 2007-08-31 15:51:31 UTC (rev 13) +++ mysql-5.0.45-tritonn-1.0.5/mysql-test/suite/senna/r/senna_sjis.result 2007-09-04 11:35:32 UTC (rev 14) @@ -21,7 +21,7 @@ ) ENGINE=MyISAM DEFAULT CHARSET=sjis SHOW SENNA STATUS; Table Key_name Column_name Encoding Index_type Normalize Split_alpha Split_digit Split_symbol Initial_n_segments Senna_keys_size Senna_keys_file_size Senna_lexicon_size Senna_lexicon_file_size Senna_inv_seg_size Senna_inv_chunk_size -t1 ft c2 sjis NGRAM ON OFF OFF OFF 512 0 4268032 0 4268032 167936 135168 +t1 ft c2 cp932 NGRAM ON OFF OFF OFF 512 0 4268032 0 4268032 167936 135168 INSERT INTO t1 (c2) VALUES ("世界で最もポピュラーなオープンソースデータベースMySQL"); INSERT INTO t1 (c2) VALUES ("住商情報システムはMySQLのオフィシャルトレーニングと商用ライセンスを提供しております。"); INSERT INTO t1 (c2) VALUES ("他のオープンソースRDBMSと比較して「高速」で「安定」していることに定評があり、世界で600万のMySQLが稼動しています。"); Modified: mysql-5.0.45-tritonn-1.0.5/mysql-test/suite/senna/r/senna_ujis.result =================================================================== --- mysql-5.0.45-tritonn-1.0.5/mysql-test/suite/senna/r/senna_ujis.result 2007-08-31 15:51:31 UTC (rev 13) +++ mysql-5.0.45-tritonn-1.0.5/mysql-test/suite/senna/r/senna_ujis.result 2007-09-04 11:35:32 UTC (rev 14) @@ -21,7 +21,7 @@ ) ENGINE=MyISAM DEFAULT CHARSET=ujis SHOW SENNA STATUS; Table Key_name Column_name Encoding Index_type Normalize Split_alpha Split_digit Split_symbol Initial_n_segments Senna_keys_size Senna_keys_file_size Senna_lexicon_size Senna_lexicon_file_size Senna_inv_seg_size Senna_inv_chunk_size -t1 ft c2 euc_jp NGRAM ON OFF OFF OFF 512 0 4268032 0 4268032 167936 135168 +t1 ft c2 eucjpms NGRAM ON OFF OFF OFF 512 0 4268032 0 4268032 167936 135168 INSERT INTO t1 (c2) VALUES ("世界で最もポピュラーなオープンソースデータベースMySQL"); INSERT INTO t1 (c2) VALUES ("住商情報システムはMySQLのオフィシャルトレーニングと商用ライセンスを提供しております。"); INSERT INTO t1 (c2) VALUES ("他のオープンソースRDBMSと比較して「高速」で「安定」していることに定評があり、世界で600万のMySQLが稼動しています。"); Modified: mysql-5.0.45-tritonn-1.0.5/sql/ha_myisam.cc =================================================================== --- mysql-5.0.45-tritonn-1.0.5/sql/ha_myisam.cc 2007-08-31 15:51:31 UTC (rev 13) +++ mysql-5.0.45-tritonn-1.0.5/sql/ha_myisam.cc 2007-09-04 11:35:32 UTC (rev 14) @@ -121,27 +121,45 @@ } #ifdef ENABLE_SENNA -static sen_encoding senna_enc_type(const char *csname) +typedef struct st_senna_enc_map { + char* enc_mysql; + sen_encoding enc_senna; +} SENNA_ENC_MAP; + +SENNA_ENC_MAP senna_enc_mapping[] = { + {"utf8", sen_enc_utf8}, + {"cp932", sen_enc_sjis}, + {"sjis", sen_enc_sjis}, + {"eucjpms", sen_enc_euc_jp}, + {"ujis", sen_enc_euc_jp}, + {"latin1", sen_enc_latin1}, + {"koi8r", sen_enc_koi8r}, + {0, sen_enc_default}, + {0, sen_enc_none}}; /* this must be last */ + +sen_encoding senna_enc_senna(const char *csname) { - if (!my_strcasecmp(system_charset_info, csname, "latin1")) - return sen_enc_latin1; - else if (!my_strcasecmp(system_charset_info, csname, "utf8")) - return sen_enc_utf8; - else if (!my_strcasecmp(system_charset_info, csname, "cp932")) - return sen_enc_sjis; - else if (!my_strcasecmp(system_charset_info, csname, "sjis")) - return sen_enc_sjis; - else if (!my_strcasecmp(system_charset_info, csname, "eucjpms")) - return sen_enc_euc_jp; - else if (!my_strcasecmp(system_charset_info, csname, "ujis")) - return sen_enc_euc_jp; - else if (!my_strcasecmp(system_charset_info, csname, "koi8r")) - return sen_enc_koi8r; - else - return sen_enc_default; + if (!csname) return sen_enc_none; + int i; + for (i = 0; senna_enc_mapping[i].enc_mysql; i++) { + if (!(my_strcasecmp(system_charset_info, csname, + senna_enc_mapping[i].enc_mysql))) + return senna_enc_mapping[i].enc_senna; + } + return sen_enc_none; } -#endif +char *senna_enc_mysql(sen_encoding encoding) +{ + int i; + for (i = 0; (senna_enc_mapping[i].enc_senna != sen_enc_default); i++) { + if (senna_enc_mapping[i].enc_senna == encoding) + return senna_enc_mapping[i].enc_mysql; + } + return 0; +} +#endif /* ENABLE_SENNA */ + /* Convert TABLE object to MyISAM key and column definition @@ -192,8 +210,7 @@ if (table_arg->key_info) { keydef[i].senna_flags=pos->senna_flags; keydef[i].senna_initial_n_segments=pos->senna_initial_n_segments; - keydef[i].senna_encoding=pos->senna_encoding ? - senna_enc_type(pos->senna_encoding) : sen_enc_default; + keydef[i].senna_encoding=senna_enc_senna(pos->senna_encoding); } else { keydef[i].senna_flags=SEN_DISABLE_SENNA; keydef[i].senna_initial_n_segments=0; @@ -1716,17 +1733,7 @@ key->senna_inv_seg_size = mi_keydef->senna_inv_seg_size; key->senna_inv_chunk_size = mi_keydef->senna_inv_chunk_size; - if (mi_keydef->senna_encoding == sen_enc_utf8) { - key->senna_encoding = "utf8"; - } else if (mi_keydef->senna_encoding == sen_enc_sjis) { - key->senna_encoding = "sjis"; - } else if (mi_keydef->senna_encoding == sen_enc_euc_jp) { - key->senna_encoding = "euc_jp"; - } else if (mi_keydef->senna_encoding == sen_enc_latin1) { - key->senna_encoding = "latin1"; - } else if (mi_keydef->senna_encoding == sen_enc_koi8r) { - key->senna_encoding = "koi8r"; - } + key->senna_encoding = senna_enc_mysql(mi_keydef->senna_encoding); } } } Modified: mysql-5.0.45-tritonn-1.0.5/sql/item_strfunc.cc =================================================================== --- mysql-5.0.45-tritonn-1.0.5/sql/item_strfunc.cc 2007-08-31 15:51:31 UTC (rev 13) +++ mysql-5.0.45-tritonn-1.0.5/sql/item_strfunc.cc 2007-09-04 11:35:32 UTC (rev 14) @@ -3457,7 +3457,7 @@ return &my_empty_string; } - encoding = senna_enc_type(target->charset()->csname); + encoding = senna_enc_senna(target->charset()->csname); if (html_encoding == 1) { mapping = (sen_snip_mapping *) -1; } else { Modified: mysql-5.0.45-tritonn-1.0.5/sql/mysql_priv.h =================================================================== --- mysql-5.0.45-tritonn-1.0.5/sql/mysql_priv.h 2007-08-31 15:51:31 UTC (rev 13) +++ mysql-5.0.45-tritonn-1.0.5/sql/mysql_priv.h 2007-09-04 11:35:32 UTC (rev 14) @@ -949,6 +949,8 @@ #ifdef ENABLE_SENNA bool senna_show_status(THD *thd, LEX *lex); +char *senna_enc_mysql(sen_encoding encoding); +sen_encoding senna_enc_senna(const char *csname); #endif /* information schema */