null+****@clear*****
null+****@clear*****
2012年 7月 26日 (木) 13:56:50 JST
Kouhei Sutou 2012-07-26 13:56:50 +0900 (Thu, 26 Jul 2012) New Revision: 038ee5f79aafe82081aa9f6421406d82171a8020 https://github.com/mroonga/mroonga/commit/038ee5f79aafe82081aa9f6421406d82171a8020 Log: storage: support INT UNSIGNED type Added files: test/sql/suite/mroonga_storage/r/column_signed_int_with_index.result test/sql/suite/mroonga_storage/r/column_unsigned_int_with_index.result test/sql/suite/mroonga_storage/t/column_signed_int_with_index.test test/sql/suite/mroonga_storage/t/column_unsigned_int_with_index.test Modified files: ha_mroonga.cpp Modified: ha_mroonga.cpp (+5 -1) =================================================================== --- ha_mroonga.cpp 2012-07-26 13:46:50 +0900 (16a1623) +++ ha_mroonga.cpp 2012-07-26 13:56:50 +0900 (3bacced) @@ -1017,7 +1017,11 @@ static grn_builtin_type mrn_grn_type_from_field(grn_ctx *ctx, Field *field, } break; case MYSQL_TYPE_LONG: // INT; 4bytes - type = GRN_DB_INT32; // 4bytes + if (static_cast<Field_num *>(field)->unsigned_flag) { + type = GRN_DB_UINT32; // 4bytes + } else { + type = GRN_DB_INT32; // 4bytes + } break; case MYSQL_TYPE_FLOAT: // FLOAT; 4 or 8bytes case MYSQL_TYPE_DOUBLE: // DOUBLE; 8bytes Added: test/sql/suite/mroonga_storage/r/column_signed_int_with_index.result (+28 -0) 100644 =================================================================== --- /dev/null +++ test/sql/suite/mroonga_storage/r/column_signed_int_with_index.result 2012-07-26 13:56:50 +0900 (867b887) @@ -0,0 +1,28 @@ +DROP TABLE IF EXISTS items; +CREATE TABLE items ( +name VARCHAR(255), +price INT KEY +) DEFAULT CHARSET=utf8; +INSERT INTO items VALUES ("car", 2147483647); +INSERT INTO items VALUES ("note PC", 32767); +INSERT INTO items VALUES ("discount", -2147483647); +INSERT INTO items VALUES ("coke", 100); +INSERT INTO items VALUES ("bike", 16777216); +SELECT * FROM items; +name price +discount -2147483647 +coke 100 +note PC 32767 +bike 16777216 +car 2147483647 +SELECT * FROM items WHERE price <= 16777216; +name price +discount -2147483647 +coke 100 +note PC 32767 +bike 16777216 +SELECT * FROM items WHERE price > 16777215; +name price +bike 16777216 +car 2147483647 +DROP TABLE items; Added: test/sql/suite/mroonga_storage/r/column_unsigned_int_with_index.result (+28 -0) 100644 =================================================================== --- /dev/null +++ test/sql/suite/mroonga_storage/r/column_unsigned_int_with_index.result 2012-07-26 13:56:50 +0900 (d14ef87) @@ -0,0 +1,28 @@ +DROP TABLE IF EXISTS items; +CREATE TABLE items ( +name VARCHAR(255), +price INT UNSIGNED KEY +) DEFAULT CHARSET=utf8; +INSERT INTO items VALUES ("car", 4294967295); +INSERT INTO items VALUES ("note PC", 32767); +INSERT INTO items VALUES ("discount", 0); +INSERT INTO items VALUES ("coke", 100); +INSERT INTO items VALUES ("bike", 2147483648); +SELECT * FROM items; +name price +discount 0 +coke 100 +note PC 32767 +bike 2147483648 +car 4294967295 +SELECT * FROM items WHERE price <= 2147483648; +name price +discount 0 +coke 100 +note PC 32767 +bike 2147483648 +SELECT * FROM items WHERE price > 2147483647; +name price +bike 2147483648 +car 4294967295 +DROP TABLE items; Added: test/sql/suite/mroonga_storage/t/column_signed_int_with_index.test (+42 -0) 100644 =================================================================== --- /dev/null +++ test/sql/suite/mroonga_storage/t/column_signed_int_with_index.test 2012-07-26 13:56:50 +0900 (b44be5d) @@ -0,0 +1,42 @@ +# 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), + price INT KEY +) DEFAULT CHARSET=utf8; + +INSERT INTO items VALUES ("car", 2147483647); +INSERT INTO items VALUES ("note PC", 32767); +INSERT INTO items VALUES ("discount", -2147483647); +INSERT INTO items VALUES ("coke", 100); +INSERT INTO items VALUES ("bike", 16777216); + +SELECT * FROM items; + +SELECT * FROM items WHERE price <= 16777216; + +SELECT * FROM items WHERE price > 16777215; + +DROP TABLE items; + +--source include/have_mroonga_deinit.inc Added: test/sql/suite/mroonga_storage/t/column_unsigned_int_with_index.test (+42 -0) 100644 =================================================================== --- /dev/null +++ test/sql/suite/mroonga_storage/t/column_unsigned_int_with_index.test 2012-07-26 13:56:50 +0900 (d7c5611) @@ -0,0 +1,42 @@ +# 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), + price INT UNSIGNED KEY +) DEFAULT CHARSET=utf8; + +INSERT INTO items VALUES ("car", 4294967295); +INSERT INTO items VALUES ("note PC", 32767); +INSERT INTO items VALUES ("discount", 0); +INSERT INTO items VALUES ("coke", 100); +INSERT INTO items VALUES ("bike", 2147483648); + +SELECT * FROM items; + +SELECT * FROM items WHERE price <= 2147483648; + +SELECT * FROM items WHERE price > 2147483647; + +DROP TABLE items; + +--source include/have_mroonga_deinit.inc -------------- next part -------------- HTML$B$NE:IU%U%!%$%k$rJ]4I$7$^$7$?(B...Download