[Groonga-mysql-commit] mroonga/mroonga [master] storage: support INT UNSIGNED type

Back to archive index

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 



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