null+****@clear*****
null+****@clear*****
2012年 4月 19日 (木) 00:04:21 JST
Kouhei Sutou 2012-04-19 00:04:21 +0900 (Thu, 19 Apr 2012) New Revision: 774de26c50e9d47bcfe251a711856378c6c6d3d4 Log: storage: use unsigined type for ENUM type Unsigned type is suitable because available ENUM value is in 0-65535. Added files: test/sql/suite/mroonga_storage/r/column_enum_many_with_index.result test/sql/suite/mroonga_storage/t/column_enum_many_with_index.test Modified files: ha_mroonga.cpp Modified: ha_mroonga.cpp (+1 -1) =================================================================== --- ha_mroonga.cpp 2012-04-19 00:02:19 +0900 (090fe21) +++ ha_mroonga.cpp 2012-04-19 00:04:21 +0900 (c3ac9da) @@ -1030,7 +1030,7 @@ static grn_builtin_type mrn_grn_type_from_field(grn_ctx *ctx, Field *field, type = GRN_DB_SHORT_TEXT; // 4Kbytes break; case MYSQL_TYPE_ENUM: // ENUM; <= 2bytes - type = GRN_DB_INT16; // 2bytes + type = GRN_DB_UINT16; // 2bytes break; case MYSQL_TYPE_SET: // SET; <= 8bytes type = GRN_DB_INT64; // 8bytes Added: test/sql/suite/mroonga_storage/r/column_enum_many_with_index.result (+287 -0) 100644 =================================================================== --- /dev/null +++ test/sql/suite/mroonga_storage/r/column_enum_many_with_index.result 2012-04-19 00:04:21 +0900 (2c8cc28) @@ -0,0 +1,287 @@ +DROP TABLE IF EXISTS items; +CREATE TABLE items ( +name VARCHAR(255), +size ENUM("size1", +"size2", +"size3", +"size4", +"size5", +"size6", +"size7", +"size8", +"size9", +"size10", +"size11", +"size12", +"size13", +"size14", +"size15", +"size16", +"size17", +"size18", +"size19", +"size20", +"size21", +"size22", +"size23", +"size24", +"size25", +"size26", +"size27", +"size28", +"size29", +"size30", +"size31", +"size32", +"size33", +"size34", +"size35", +"size36", +"size37", +"size38", +"size39", +"size40", +"size41", +"size42", +"size43", +"size44", +"size45", +"size46", +"size47", +"size48", +"size49", +"size50", +"size51", +"size52", +"size53", +"size54", +"size55", +"size56", +"size57", +"size58", +"size59", +"size60", +"size61", +"size62", +"size63", +"size64", +"size65", +"size66", +"size67", +"size68", +"size69", +"size70", +"size71", +"size72", +"size73", +"size74", +"size75", +"size76", +"size77", +"size78", +"size79", +"size80", +"size81", +"size82", +"size83", +"size84", +"size85", +"size86", +"size87", +"size88", +"size89", +"size90", +"size91", +"size92", +"size93", +"size94", +"size95", +"size96", +"size97", +"size98", +"size99", +"size100", +"size101", +"size102", +"size103", +"size104", +"size105", +"size106", +"size107", +"size108", +"size109", +"size110", +"size111", +"size112", +"size113", +"size114", +"size115", +"size116", +"size117", +"size118", +"size119", +"size120", +"size121", +"size122", +"size123", +"size124", +"size125", +"size126", +"size127", +"size128", +"size129", +"size130", +"size131", +"size132", +"size133", +"size134", +"size135", +"size136", +"size137", +"size138", +"size139", +"size140", +"size141", +"size142", +"size143", +"size144", +"size145", +"size146", +"size147", +"size148", +"size149", +"size150", +"size151", +"size152", +"size153", +"size154", +"size155", +"size156", +"size157", +"size158", +"size159", +"size160", +"size161", +"size162", +"size163", +"size164", +"size165", +"size166", +"size167", +"size168", +"size169", +"size170", +"size171", +"size172", +"size173", +"size174", +"size175", +"size176", +"size177", +"size178", +"size179", +"size180", +"size181", +"size182", +"size183", +"size184", +"size185", +"size186", +"size187", +"size188", +"size189", +"size190", +"size191", +"size192", +"size193", +"size194", +"size195", +"size196", +"size197", +"size198", +"size199", +"size200", +"size201", +"size202", +"size203", +"size204", +"size205", +"size206", +"size207", +"size208", +"size209", +"size210", +"size211", +"size212", +"size213", +"size214", +"size215", +"size216", +"size217", +"size218", +"size219", +"size220", +"size221", +"size222", +"size223", +"size224", +"size225", +"size226", +"size227", +"size228", +"size229", +"size230", +"size231", +"size232", +"size233", +"size234", +"size235", +"size236", +"size237", +"size238", +"size239", +"size240", +"size241", +"size242", +"size243", +"size244", +"size245", +"size246", +"size247", +"size248", +"size249", +"size250", +"size251", +"size252", +"size253", +"size254", +"size255", +"size256"), +INDEX (size) +) ENGINE=mroonga DEFAULT CHARSET=utf8; +SHOW CREATE TABLE items; +Table Create Table +items CREATE TABLE `items` ( + `name` varchar(255) DEFAULT NULL, + `size` enum('size1','size2','size3','size4','size5','size6','size7','size8','size9','size10','size11','size12','size13','size14','size15','size16','size17','size18','size19','size20','size21','size22','size23','size24','size25','size26','size27','size28','size29','size30','size31','size32','size33','size34','size35','size36','size37','size38','size39','size40','size41','size42','size43','size44','size45','size46','size47','size48','size49','size50','size51','size52','size53','size54','size55','size56','size57','size58','size59','size60','size61','size62','size63','size64','size65','size66','size67','size68','size69','size70','size71','size72','size73','size74','size75','size76','size77','size78','size79','size80','size81','size82','size83','size84','size85','size86','size87','size88','size89','size90','size91','size92','size93','size94','size95','size96','size97','size98','size99','size100','size101','size102','size103','size104','size105','size106','size107','size108','si ze109','size110','size111','size112','size113','size114','size115','size116','size117','size118','size119','size120','size121','size122','size123','size124','size125','size126','size127','size128','size129','size130','size131','size132','size133','size134','size135','size136','size137','size138','size139','size140','size141','size142','size143','size144','size145','size146','size147','size148','size149','size150','size151','size152','size153','size154','size155','size156','size157','size158','size159','size160','size161','size162','size163','size164','size165','size166','size167','size168','size169','size170','size171','size172','size173','size174','size175','size176','size177','size178','size179','size180','size181','size182','size183','size184','size185','size186','size187','size188','size189','size190','size191','size192','size193','size194','size195','size196','size197','size198','size199','size200','size201','size202','size203','size204','size205','size206','size207','s ize208','size209','size210','size211','size212','size213','size214','size215','size216','size217','size218','size219','size220','size221','size222','size223','size224','size225','size226','size227','size228','size229','size230','size231','size232','size233','size234','size235','size236','size237','size238','size239','size240','size241','size242','size243','size244','size245','size246','size247','size248','size249','size250','size251','size252','size253','size254','size255','size256') DEFAULT NULL, + KEY `size` (`size`) +) ENGINE=mroonga DEFAULT CHARSET=utf8 +INSERT INTO items VALUES ("t-shart for child", "size1"); +INSERT INTO items VALUES ("leadies' coat", "size1"); +INSERT INTO items VALUES ("parka", "size256"); +INSERT INTO items VALUES ("hat", "size256"); +SELECT * FROM items; +name size +t-shart for child size1 +leadies' coat size1 +parka size256 +hat size256 +SELECT * FROM items WHERE size = "size1"; +name size +t-shart for child size1 +leadies' coat size1 +SELECT * FROM items WHERE size = "size256"; +name size +parka size256 +hat size256 +DROP TABLE items; Added: test/sql/suite/mroonga_storage/t/column_enum_many_with_index.test (+298 -0) 100644 =================================================================== --- /dev/null +++ test/sql/suite/mroonga_storage/t/column_enum_many_with_index.test 2012-04-19 00:04:21 +0900 (e399b69) @@ -0,0 +1,298 @@ +# Copyright(C) 2012 Kouhei Sutou <kou****@clear*****> +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +--source include/have_mroonga.inc + +--disable_warnings +DROP TABLE IF EXISTS items; +--enable_warnings + +CREATE TABLE items ( + name VARCHAR(255), + size ENUM("size1", + "size2", + "size3", + "size4", + "size5", + "size6", + "size7", + "size8", + "size9", + "size10", + "size11", + "size12", + "size13", + "size14", + "size15", + "size16", + "size17", + "size18", + "size19", + "size20", + "size21", + "size22", + "size23", + "size24", + "size25", + "size26", + "size27", + "size28", + "size29", + "size30", + "size31", + "size32", + "size33", + "size34", + "size35", + "size36", + "size37", + "size38", + "size39", + "size40", + "size41", + "size42", + "size43", + "size44", + "size45", + "size46", + "size47", + "size48", + "size49", + "size50", + "size51", + "size52", + "size53", + "size54", + "size55", + "size56", + "size57", + "size58", + "size59", + "size60", + "size61", + "size62", + "size63", + "size64", + "size65", + "size66", + "size67", + "size68", + "size69", + "size70", + "size71", + "size72", + "size73", + "size74", + "size75", + "size76", + "size77", + "size78", + "size79", + "size80", + "size81", + "size82", + "size83", + "size84", + "size85", + "size86", + "size87", + "size88", + "size89", + "size90", + "size91", + "size92", + "size93", + "size94", + "size95", + "size96", + "size97", + "size98", + "size99", + "size100", + "size101", + "size102", + "size103", + "size104", + "size105", + "size106", + "size107", + "size108", + "size109", + "size110", + "size111", + "size112", + "size113", + "size114", + "size115", + "size116", + "size117", + "size118", + "size119", + "size120", + "size121", + "size122", + "size123", + "size124", + "size125", + "size126", + "size127", + "size128", + "size129", + "size130", + "size131", + "size132", + "size133", + "size134", + "size135", + "size136", + "size137", + "size138", + "size139", + "size140", + "size141", + "size142", + "size143", + "size144", + "size145", + "size146", + "size147", + "size148", + "size149", + "size150", + "size151", + "size152", + "size153", + "size154", + "size155", + "size156", + "size157", + "size158", + "size159", + "size160", + "size161", + "size162", + "size163", + "size164", + "size165", + "size166", + "size167", + "size168", + "size169", + "size170", + "size171", + "size172", + "size173", + "size174", + "size175", + "size176", + "size177", + "size178", + "size179", + "size180", + "size181", + "size182", + "size183", + "size184", + "size185", + "size186", + "size187", + "size188", + "size189", + "size190", + "size191", + "size192", + "size193", + "size194", + "size195", + "size196", + "size197", + "size198", + "size199", + "size200", + "size201", + "size202", + "size203", + "size204", + "size205", + "size206", + "size207", + "size208", + "size209", + "size210", + "size211", + "size212", + "size213", + "size214", + "size215", + "size216", + "size217", + "size218", + "size219", + "size220", + "size221", + "size222", + "size223", + "size224", + "size225", + "size226", + "size227", + "size228", + "size229", + "size230", + "size231", + "size232", + "size233", + "size234", + "size235", + "size236", + "size237", + "size238", + "size239", + "size240", + "size241", + "size242", + "size243", + "size244", + "size245", + "size246", + "size247", + "size248", + "size249", + "size250", + "size251", + "size252", + "size253", + "size254", + "size255", + "size256"), + INDEX (size) +) ENGINE=mroonga DEFAULT CHARSET=utf8; +SHOW CREATE TABLE items; + +INSERT INTO items VALUES ("t-shart for child", "size1"); +INSERT INTO items VALUES ("leadies' coat", "size1"); +INSERT INTO items VALUES ("parka", "size256"); +INSERT INTO items VALUES ("hat", "size256"); + +SELECT * FROM items; + +SELECT * FROM items WHERE size = "size1"; + +SELECT * FROM items WHERE size = "size256"; + +DROP TABLE items; + +--source include/have_mroonga_deinit.inc