[tritonn-commit] [svn] [14] refactoring for sen_enc_type.

Back to archive index

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 */




Tritonn-commit メーリングリストの案内
Back to archive index