rroonga 6.0.0 → 6.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/doc/text/news.md +38 -1
- data/ext/groonga/extconf.rb +14 -1
- data/ext/groonga/rb-grn-array.c +1 -1
- data/ext/groonga/rb-grn-double-array-trie.c +1 -1
- data/ext/groonga/rb-grn-exception.c +18 -1
- data/ext/groonga/rb-grn-expression.c +0 -8
- data/ext/groonga/rb-grn-hash.c +15 -3
- data/ext/groonga/rb-grn-logger.c +22 -22
- data/ext/groonga/rb-grn-object.c +28 -6
- data/ext/groonga/rb-grn-patricia-trie.c +1 -1
- data/ext/groonga/rb-grn-request-canceler.c +164 -0
- data/ext/groonga/rb-grn-request-timer-id.c +64 -0
- data/ext/groonga/rb-grn-request-timer.c +155 -0
- data/ext/groonga/rb-grn-type.c +43 -1
- data/ext/groonga/rb-grn.h +17 -5
- data/ext/groonga/rb-groonga.c +3 -0
- data/lib/groonga/expression-builder.rb +4 -13
- data/rroonga-build.rb +3 -3
- data/rroonga.gemspec +1 -2
- data/test/run-test.rb +2 -2
- data/test/test-expression-builder.rb +13 -1
- data/test/test-hash.rb +22 -3
- data/test/test-request-canceler.rb +46 -0
- data/test/test-request-timer.rb +40 -0
- data/test/test-table.rb +43 -7
- data/test/test-type.rb +104 -2
- metadata +59 -66
| @@ -0,0 +1,64 @@ | |
| 1 | 
            +
            /* -*- coding: utf-8; mode: C; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
         | 
| 2 | 
            +
            /*
         | 
| 3 | 
            +
              Copyright (C) 2016  Kouhei Sutou <kou@clear-code.com>
         | 
| 4 | 
            +
             | 
| 5 | 
            +
              This library is free software; you can redistribute it and/or
         | 
| 6 | 
            +
              modify it under the terms of the GNU Lesser General Public
         | 
| 7 | 
            +
              License version 2.1 as published by the Free Software Foundation.
         | 
| 8 | 
            +
             | 
| 9 | 
            +
              This library is distributed in the hope that it will be useful,
         | 
| 10 | 
            +
              but WITHOUT ANY WARRANTY; without even the implied warranty of
         | 
| 11 | 
            +
              MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
         | 
| 12 | 
            +
              Lesser General Public License for more details.
         | 
| 13 | 
            +
             | 
| 14 | 
            +
              You should have received a copy of the GNU Lesser General Public
         | 
| 15 | 
            +
              License along with this library; if not, write to the Free Software
         | 
| 16 | 
            +
              Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
         | 
| 17 | 
            +
            */
         | 
| 18 | 
            +
             | 
| 19 | 
            +
            #include "rb-grn.h"
         | 
| 20 | 
            +
             | 
| 21 | 
            +
            /*
         | 
| 22 | 
            +
             * Document-class: Groonga::RequestTimerID
         | 
| 23 | 
            +
             *
         | 
| 24 | 
            +
             * This class represents request timer ID. It's used with request timer.
         | 
| 25 | 
            +
             */
         | 
| 26 | 
            +
             | 
| 27 | 
            +
            VALUE rb_cGrnRequestTimerID;
         | 
| 28 | 
            +
             | 
| 29 | 
            +
            static rb_data_type_t data_type = {
         | 
| 30 | 
            +
                "Groonga::RequestTimeID",
         | 
| 31 | 
            +
                {
         | 
| 32 | 
            +
                    NULL,
         | 
| 33 | 
            +
                    NULL,
         | 
| 34 | 
            +
                    NULL,
         | 
| 35 | 
            +
                },
         | 
| 36 | 
            +
                NULL,
         | 
| 37 | 
            +
                NULL,
         | 
| 38 | 
            +
                0
         | 
| 39 | 
            +
            };
         | 
| 40 | 
            +
             | 
| 41 | 
            +
            void *
         | 
| 42 | 
            +
            rb_grn_request_timer_id_from_ruby_object (VALUE rb_id)
         | 
| 43 | 
            +
            {
         | 
| 44 | 
            +
                if (NIL_P(rb_id)) {
         | 
| 45 | 
            +
                    return NULL;
         | 
| 46 | 
            +
                } else {
         | 
| 47 | 
            +
                    void *id;
         | 
| 48 | 
            +
                    TypedData_Get_Struct(rb_id, void *, &data_type, id);
         | 
| 49 | 
            +
                    return id;
         | 
| 50 | 
            +
                }
         | 
| 51 | 
            +
            }
         | 
| 52 | 
            +
             | 
| 53 | 
            +
            VALUE
         | 
| 54 | 
            +
            rb_grn_request_timer_id_to_ruby_object (void *id)
         | 
| 55 | 
            +
            {
         | 
| 56 | 
            +
                return TypedData_Wrap_Struct(rb_cGrnRequestTimerID, &data_type, id);
         | 
| 57 | 
            +
            }
         | 
| 58 | 
            +
             | 
| 59 | 
            +
            void
         | 
| 60 | 
            +
            rb_grn_init_request_timer_id (VALUE mGrn)
         | 
| 61 | 
            +
            {
         | 
| 62 | 
            +
                rb_cGrnRequestTimerID =
         | 
| 63 | 
            +
                    rb_define_class_under(mGrn, "RequestTimerID", rb_cData);
         | 
| 64 | 
            +
            }
         | 
| @@ -0,0 +1,155 @@ | |
| 1 | 
            +
            /* -*- coding: utf-8; mode: C; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
         | 
| 2 | 
            +
            /*
         | 
| 3 | 
            +
              Copyright (C) 2016  Kouhei Sutou <kou@clear-code.com>
         | 
| 4 | 
            +
             | 
| 5 | 
            +
              This library is free software; you can redistribute it and/or
         | 
| 6 | 
            +
              modify it under the terms of the GNU Lesser General Public
         | 
| 7 | 
            +
              License version 2.1 as published by the Free Software Foundation.
         | 
| 8 | 
            +
             | 
| 9 | 
            +
              This library is distributed in the hope that it will be useful,
         | 
| 10 | 
            +
              but WITHOUT ANY WARRANTY; without even the implied warranty of
         | 
| 11 | 
            +
              MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
         | 
| 12 | 
            +
              Lesser General Public License for more details.
         | 
| 13 | 
            +
             | 
| 14 | 
            +
              You should have received a copy of the GNU Lesser General Public
         | 
| 15 | 
            +
              License along with this library; if not, write to the Free Software
         | 
| 16 | 
            +
              Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
         | 
| 17 | 
            +
            */
         | 
| 18 | 
            +
             | 
| 19 | 
            +
            #include "rb-grn.h"
         | 
| 20 | 
            +
             | 
| 21 | 
            +
            /*
         | 
| 22 | 
            +
             * Document-module: Groonga::RequestTimer
         | 
| 23 | 
            +
             *
         | 
| 24 | 
            +
             * This module provides API for canceling requests after the specified
         | 
| 25 | 
            +
             * time.
         | 
| 26 | 
            +
             */
         | 
| 27 | 
            +
             | 
| 28 | 
            +
            VALUE rb_mGrnRequestTimer;
         | 
| 29 | 
            +
             | 
| 30 | 
            +
            /*
         | 
| 31 | 
            +
             * Registers a request with timeout. If the request isn't finished
         | 
| 32 | 
            +
             * after the specified timeout, the request is canceled.
         | 
| 33 | 
            +
             *
         | 
| 34 | 
            +
             * @example Register a request that will be timed out after 2.9 seconds
         | 
| 35 | 
            +
             *   request_id = "request-29"
         | 
| 36 | 
            +
             *   timeout_in_second = 2.9
         | 
| 37 | 
            +
             *   Groonga::RequestTimer.register(request_id, timeout_in_second)
         | 
| 38 | 
            +
             *
         | 
| 39 | 
            +
             * @overload register(request_id, timeout=nil)
         | 
| 40 | 
            +
             *   @param request_id [String] The ID of request to be registered.
         | 
| 41 | 
            +
             *   @param timeout (nil) [Float, nil] The timeout in second. If
         | 
| 42 | 
            +
             *      `timeout` is `nil`, {Groonga::RequestTimer.default_timeout} is
         | 
| 43 | 
            +
             *      used.
         | 
| 44 | 
            +
             *   @return [Groonga::RequestTimerID] The ID of the request timer.
         | 
| 45 | 
            +
             *
         | 
| 46 | 
            +
             * @since 6.0.2
         | 
| 47 | 
            +
             */
         | 
| 48 | 
            +
            static VALUE
         | 
| 49 | 
            +
            rb_grn_request_timer_s_register (int argc, VALUE *argv, VALUE module)
         | 
| 50 | 
            +
            {
         | 
| 51 | 
            +
                VALUE rb_request_id;
         | 
| 52 | 
            +
                VALUE rb_timeout;
         | 
| 53 | 
            +
                const char *request_id;
         | 
| 54 | 
            +
                unsigned int request_id_size;
         | 
| 55 | 
            +
                double timeout;
         | 
| 56 | 
            +
                void *timer_id;
         | 
| 57 | 
            +
             | 
| 58 | 
            +
                rb_scan_args(argc, argv, "11", &rb_request_id, &rb_timeout);
         | 
| 59 | 
            +
             | 
| 60 | 
            +
                request_id = StringValuePtr(rb_request_id);
         | 
| 61 | 
            +
                request_id_size = RSTRING_LEN(rb_request_id);
         | 
| 62 | 
            +
                if (NIL_P(rb_timeout)) {
         | 
| 63 | 
            +
                  timeout = grn_get_default_request_timeout();
         | 
| 64 | 
            +
                } else {
         | 
| 65 | 
            +
                  timeout = NUM2DBL(rb_timeout);
         | 
| 66 | 
            +
                }
         | 
| 67 | 
            +
                timer_id = grn_request_timer_register(request_id, request_id_size, timeout);
         | 
| 68 | 
            +
             | 
| 69 | 
            +
                return GRN_REQUEST_TIMER_ID2RVAL(timer_id);
         | 
| 70 | 
            +
            }
         | 
| 71 | 
            +
             | 
| 72 | 
            +
            /*
         | 
| 73 | 
            +
             * Unregisters the specified request timer.
         | 
| 74 | 
            +
             *
         | 
| 75 | 
            +
             * @example Unregister a request timer by ID
         | 
| 76 | 
            +
             *   timer_id = Groonga::RequestTimer.register("request-29", 2.9)
         | 
| 77 | 
            +
             *   Groonga::RequestTimer.unregister(timer_id)
         | 
| 78 | 
            +
             *
         | 
| 79 | 
            +
             * @overload unregister(timer_id)
         | 
| 80 | 
            +
             *   @param timer_id [Groonga::RequestTimerID] The ID of request timer
         | 
| 81 | 
            +
             *      to be unregistered.
         | 
| 82 | 
            +
             *   @return [void]
         | 
| 83 | 
            +
             *
         | 
| 84 | 
            +
             * @since 6.0.2
         | 
| 85 | 
            +
             */
         | 
| 86 | 
            +
            static VALUE
         | 
| 87 | 
            +
            rb_grn_request_timer_s_unregister (VALUE module, VALUE rb_timer_id)
         | 
| 88 | 
            +
            {
         | 
| 89 | 
            +
                void *timer_id;
         | 
| 90 | 
            +
             | 
| 91 | 
            +
                timer_id = RVAL2GRN_REQUEST_TIMER_ID(rb_timer_id);
         | 
| 92 | 
            +
                grn_request_timer_unregister(timer_id);
         | 
| 93 | 
            +
             | 
| 94 | 
            +
                return Qnil;
         | 
| 95 | 
            +
            }
         | 
| 96 | 
            +
             | 
| 97 | 
            +
            /*
         | 
| 98 | 
            +
             * Gets the default timeout used by request timer.
         | 
| 99 | 
            +
             *
         | 
| 100 | 
            +
             * @example Gets the default timeout
         | 
| 101 | 
            +
             *   Groonga::RequestTimer.default_timeout
         | 
| 102 | 
            +
             *
         | 
| 103 | 
            +
             * @overload default_timeout
         | 
| 104 | 
            +
             *   @return [Float] The default timeout used by request timer.
         | 
| 105 | 
            +
             *
         | 
| 106 | 
            +
             * @since 6.0.2
         | 
| 107 | 
            +
             */
         | 
| 108 | 
            +
            static VALUE
         | 
| 109 | 
            +
            rb_grn_request_timer_s_get_default_timeout (VALUE module)
         | 
| 110 | 
            +
            {
         | 
| 111 | 
            +
                double timeout;
         | 
| 112 | 
            +
             | 
| 113 | 
            +
                timeout = grn_get_default_request_timeout();
         | 
| 114 | 
            +
             | 
| 115 | 
            +
                return rb_float_new(timeout);
         | 
| 116 | 
            +
            }
         | 
| 117 | 
            +
             | 
| 118 | 
            +
            /*
         | 
| 119 | 
            +
             * Sets the default timeout used by request timer.
         | 
| 120 | 
            +
             *
         | 
| 121 | 
            +
             * @example Sets the default timeout
         | 
| 122 | 
            +
             *   Groonga::RequestTimer.default_timeout = 2.9
         | 
| 123 | 
            +
             *
         | 
| 124 | 
            +
             * @overload default_timeout=(timeout)
         | 
| 125 | 
            +
             *   @return [Float] The default timeout used by request timer. If
         | 
| 126 | 
            +
             *     `timeout` is `0.0`, the default timeout is disabled.
         | 
| 127 | 
            +
             *   @return [void]
         | 
| 128 | 
            +
             *
         | 
| 129 | 
            +
             * @since 6.0.2
         | 
| 130 | 
            +
             */
         | 
| 131 | 
            +
            static VALUE
         | 
| 132 | 
            +
            rb_grn_request_timer_s_set_default_timeout (VALUE module, VALUE rb_timeout)
         | 
| 133 | 
            +
            {
         | 
| 134 | 
            +
                double timeout;
         | 
| 135 | 
            +
             | 
| 136 | 
            +
                timeout = NUM2DBL(rb_timeout);
         | 
| 137 | 
            +
                grn_set_default_request_timeout(timeout);
         | 
| 138 | 
            +
             | 
| 139 | 
            +
                return Qnil;
         | 
| 140 | 
            +
            }
         | 
| 141 | 
            +
             | 
| 142 | 
            +
            void
         | 
| 143 | 
            +
            rb_grn_init_request_timer (VALUE mGrn)
         | 
| 144 | 
            +
            {
         | 
| 145 | 
            +
                rb_mGrnRequestTimer = rb_define_module_under(mGrn, "RequestTimer");
         | 
| 146 | 
            +
             | 
| 147 | 
            +
                rb_define_singleton_method(rb_mGrnRequestTimer, "register",
         | 
| 148 | 
            +
                                           rb_grn_request_timer_s_register, -1);
         | 
| 149 | 
            +
                rb_define_singleton_method(rb_mGrnRequestTimer, "unregister",
         | 
| 150 | 
            +
                                           rb_grn_request_timer_s_unregister, 1);
         | 
| 151 | 
            +
                rb_define_singleton_method(rb_mGrnRequestTimer, "default_timeout",
         | 
| 152 | 
            +
                                           rb_grn_request_timer_s_get_default_timeout, 0);
         | 
| 153 | 
            +
                rb_define_singleton_method(rb_mGrnRequestTimer, "default_timeout=",
         | 
| 154 | 
            +
                                           rb_grn_request_timer_s_set_default_timeout, 1);
         | 
| 155 | 
            +
            }
         | 
    
        data/ext/groonga/rb-grn-type.c
    CHANGED
    
    | @@ -1,6 +1,6 @@ | |
| 1 1 | 
             
            /* -*- coding: utf-8; mode: C; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
         | 
| 2 2 | 
             
            /*
         | 
| 3 | 
            -
              Copyright (C) 2009- | 
| 3 | 
            +
              Copyright (C) 2009-2016  Kouhei Sutou <kou@clear-code.com>
         | 
| 4 4 |  | 
| 5 5 | 
             
              This library is free software; you can redistribute it and/or
         | 
| 6 6 | 
             
              modify it under the terms of the GNU Lesser General Public
         | 
| @@ -173,6 +173,18 @@ rb_grn_type_variable_size_p (VALUE self) | |
| 173 173 | 
             
                return CBOOL2RVAL(type->header.flags & GRN_OBJ_KEY_VAR_SIZE);
         | 
| 174 174 | 
             
            }
         | 
| 175 175 |  | 
| 176 | 
            +
            static VALUE
         | 
| 177 | 
            +
            rb_grn_type_builtin_p (VALUE self)
         | 
| 178 | 
            +
            {
         | 
| 179 | 
            +
                grn_ctx *context = NULL;
         | 
| 180 | 
            +
                grn_obj *type;
         | 
| 181 | 
            +
                grn_id id;
         | 
| 182 | 
            +
             | 
| 183 | 
            +
                type = RVAL2GRNOBJECT(self, &context);
         | 
| 184 | 
            +
                id =  grn_obj_id(context, type);
         | 
| 185 | 
            +
                return CBOOL2RVAL(grn_type_id_is_builtin(context, id));
         | 
| 186 | 
            +
            }
         | 
| 187 | 
            +
             | 
| 176 188 | 
             
            static VALUE
         | 
| 177 189 | 
             
            rb_grn_type_unsigned_integer_p (VALUE self)
         | 
| 178 190 | 
             
            {
         | 
| @@ -217,6 +229,30 @@ rb_grn_type_geo_point_p (VALUE self) | |
| 217 229 | 
             
                return CBOOL2RVAL(key_type == GRN_OBJ_KEY_GEO_POINT);
         | 
| 218 230 | 
             
            }
         | 
| 219 231 |  | 
| 232 | 
            +
            static VALUE
         | 
| 233 | 
            +
            rb_grn_type_text_family_p (VALUE self)
         | 
| 234 | 
            +
            {
         | 
| 235 | 
            +
                grn_ctx *context = NULL;
         | 
| 236 | 
            +
                grn_obj *type;
         | 
| 237 | 
            +
                grn_id id;
         | 
| 238 | 
            +
             | 
| 239 | 
            +
                type = RVAL2GRNOBJECT(self, &context);
         | 
| 240 | 
            +
                id =  grn_obj_id(context, type);
         | 
| 241 | 
            +
                return CBOOL2RVAL(grn_type_id_is_text_family(context, id));
         | 
| 242 | 
            +
            }
         | 
| 243 | 
            +
             | 
| 244 | 
            +
            static VALUE
         | 
| 245 | 
            +
            rb_grn_type_number_family_p (VALUE self)
         | 
| 246 | 
            +
            {
         | 
| 247 | 
            +
                grn_ctx *context = NULL;
         | 
| 248 | 
            +
                grn_obj *type;
         | 
| 249 | 
            +
                grn_id id;
         | 
| 250 | 
            +
             | 
| 251 | 
            +
                type = RVAL2GRNOBJECT(self, &context);
         | 
| 252 | 
            +
                id =  grn_obj_id(context, type);
         | 
| 253 | 
            +
                return CBOOL2RVAL(grn_type_id_is_number_family(context, id));
         | 
| 254 | 
            +
            }
         | 
| 255 | 
            +
             | 
| 220 256 | 
             
            void
         | 
| 221 257 | 
             
            rb_grn_init_type (VALUE mGrn)
         | 
| 222 258 | 
             
            {
         | 
| @@ -229,6 +265,9 @@ rb_grn_init_type (VALUE mGrn) | |
| 229 265 | 
             
                rb_define_method(rb_cGrnType, "variable_size?",
         | 
| 230 266 | 
             
                                 rb_grn_type_variable_size_p, 0);
         | 
| 231 267 |  | 
| 268 | 
            +
                rb_define_method(rb_cGrnType, "builtin?",
         | 
| 269 | 
            +
                                 rb_grn_type_builtin_p, 0);
         | 
| 270 | 
            +
             | 
| 232 271 | 
             
                rb_define_method(rb_cGrnType, "unsigned_integer?",
         | 
| 233 272 | 
             
                                 rb_grn_type_unsigned_integer_p, 0);
         | 
| 234 273 | 
             
                rb_define_alias(rb_cGrnType, "uint?", "unsigned_integer?");
         | 
| @@ -238,6 +277,9 @@ rb_grn_init_type (VALUE mGrn) | |
| 238 277 |  | 
| 239 278 | 
             
                rb_define_method(rb_cGrnType, "float?", rb_grn_type_float_p, 0);
         | 
| 240 279 | 
             
                rb_define_method(rb_cGrnType, "geo_point?", rb_grn_type_geo_point_p, 0);
         | 
| 280 | 
            +
                rb_define_method(rb_cGrnType, "text_family?", rb_grn_type_text_family_p, 0);
         | 
| 281 | 
            +
                rb_define_method(rb_cGrnType, "number_family?",
         | 
| 282 | 
            +
                                 rb_grn_type_number_family_p, 0);
         | 
| 241 283 |  | 
| 242 284 | 
             
                /* 任意のテーブルに属する全てのレコード(Object型はv1.2で
         | 
| 243 285 | 
             
                   サポートされます)。 */
         | 
    
        data/ext/groonga/rb-grn.h
    CHANGED
    
    | @@ -99,11 +99,7 @@ RB_GRN_BEGIN_DECLS | |
| 99 99 |  | 
| 100 100 | 
             
            #define RB_GRN_MAJOR_VERSION 6
         | 
| 101 101 | 
             
            #define RB_GRN_MINOR_VERSION 0
         | 
| 102 | 
            -
            #define RB_GRN_MICRO_VERSION  | 
| 103 | 
            -
             | 
| 104 | 
            -
            #define RB_GRN_QUERY_DEFAULT_MAX_EXPRESSIONS 32
         | 
| 105 | 
            -
             | 
| 106 | 
            -
            #include <stdint.h>
         | 
| 102 | 
            +
            #define RB_GRN_MICRO_VERSION 2
         | 
| 107 103 |  | 
| 108 104 | 
             
            #define RB_GRN_OBJECT(object) ((RbGrnObject *)(object))
         | 
| 109 105 | 
             
            #define RB_GRN_NAMED_OBJECT(object) ((RbGrnNamedObject *)(object))
         | 
| @@ -300,6 +296,9 @@ RB_GRN_VAR VALUE rb_cGrnColumnExpressionBuilder; | |
| 300 296 | 
             
            RB_GRN_VAR VALUE rb_cGrnPlugin;
         | 
| 301 297 | 
             
            RB_GRN_VAR VALUE rb_cGrnNormalizer;
         | 
| 302 298 | 
             
            RB_GRN_VAR VALUE rb_cGrnIndex;
         | 
| 299 | 
            +
            RB_GRN_VAR VALUE rb_mGrnRequestCanceler;
         | 
| 300 | 
            +
            RB_GRN_VAR VALUE rb_mGrnRequestTimer;
         | 
| 301 | 
            +
            RB_GRN_VAR VALUE rb_cGrnRequestTimerID;
         | 
| 303 302 |  | 
| 304 303 | 
             
            void           rb_grn_init_utils                    (VALUE mGrn);
         | 
| 305 304 | 
             
            void           rb_grn_init_exception                (VALUE mGrn);
         | 
| @@ -355,6 +354,9 @@ void           rb_grn_init_normalizer               (VALUE mGrn); | |
| 355 354 | 
             
            void           rb_grn_init_thread                   (VALUE mGrn);
         | 
| 356 355 | 
             
            void           rb_grn_init_config                   (VALUE mGrn);
         | 
| 357 356 | 
             
            void           rb_grn_init_index                    (VALUE mGrn);
         | 
| 357 | 
            +
            void           rb_grn_init_request_canceler         (VALUE mGrn);
         | 
| 358 | 
            +
            void           rb_grn_init_request_timer            (VALUE mGrn);
         | 
| 359 | 
            +
            void           rb_grn_init_request_timer_id         (VALUE mGrn);
         | 
| 358 360 |  | 
| 359 361 | 
             
            VALUE          rb_grn_rc_to_exception               (grn_rc rc);
         | 
| 360 362 | 
             
            const char    *rb_grn_rc_to_message                 (grn_rc rc);
         | 
| @@ -738,6 +740,11 @@ VALUE          rb_grn_index_new                     (VALUE rb_index_column, | |
| 738 740 | 
             
            #define RVAL2GRNVARIABLE(object, context) \
         | 
| 739 741 | 
             
                (rb_grn_variable_from_ruby_object(object, context))
         | 
| 740 742 |  | 
| 743 | 
            +
            #define GRN_REQUEST_TIMER_ID2RVAL(id) \
         | 
| 744 | 
            +
                (rb_grn_request_timer_id_to_ruby_object(id))
         | 
| 745 | 
            +
            #define RVAL2GRN_REQUEST_TIMER_ID(rb_id) \
         | 
| 746 | 
            +
                (rb_grn_request_timer_id_from_ruby_object(rb_id))
         | 
| 747 | 
            +
             | 
| 741 748 |  | 
| 742 749 | 
             
            grn_encoding   rb_grn_encoding_from_ruby_object     (VALUE object,
         | 
| 743 750 | 
             
                                                                 grn_ctx *context);
         | 
| @@ -882,6 +889,11 @@ VALUE          rb_grn_obj_to_ruby_object            (VALUE klass, | |
| 882 889 | 
             
                                                                 grn_obj *obj,
         | 
| 883 890 | 
             
                                                                 VALUE related_object);
         | 
| 884 891 |  | 
| 892 | 
            +
            void          *rb_grn_request_timer_id_from_ruby_object
         | 
| 893 | 
            +
                                                                (VALUE rb_id);
         | 
| 894 | 
            +
            VALUE          rb_grn_request_timer_id_to_ruby_object
         | 
| 895 | 
            +
                                                                (void *id);
         | 
| 896 | 
            +
             | 
| 885 897 | 
             
            void           rb_grn_snippet_bind                  (RbGrnSnippet *rb_grn_snippet,
         | 
| 886 898 | 
             
                                                                 grn_ctx *context,
         | 
| 887 899 | 
             
                                                                 grn_obj *snippet);
         | 
    
        data/ext/groonga/rb-groonga.c
    CHANGED
    
    
| @@ -1,5 +1,3 @@ | |
| 1 | 
            -
            # -*- coding: utf-8 -*-
         | 
| 2 | 
            -
            #
         | 
| 3 1 | 
             
            # Copyright (C) 2015  Masafumi Yokoyama <yokoyama@clear-code.com>
         | 
| 4 2 | 
             
            # Copyright (C) 2009-2016  Kouhei Sutou <kou@clear-code.com>
         | 
| 5 3 | 
             
            #
         | 
| @@ -77,23 +75,16 @@ module Groonga | |
| 77 75 | 
             
                  builders << match(@query, default_parse_options) if @query
         | 
| 78 76 | 
             
                  if block_given?
         | 
| 79 77 | 
             
                    custom_builder = yield(self)
         | 
| 80 | 
            -
                     | 
| 81 | 
            -
             | 
| 82 | 
            -
                    else
         | 
| 83 | 
            -
                      builders << custom_builder
         | 
| 84 | 
            -
                    end
         | 
| 78 | 
            +
                    builders << custom_builder
         | 
| 79 | 
            +
                    builders.flatten!
         | 
| 85 80 | 
             
                  end
         | 
| 86 81 |  | 
| 87 82 | 
             
                  if builders.empty?
         | 
| 88 83 | 
             
                    expression.append_object(@table.context["all_records"])
         | 
| 89 84 | 
             
                    expression.append_operation(Operation::CALL, 0)
         | 
| 90 85 | 
             
                  else
         | 
| 91 | 
            -
                    combined_builder = builders.inject | 
| 92 | 
            -
                       | 
| 93 | 
            -
                        builder
         | 
| 94 | 
            -
                      else
         | 
| 95 | 
            -
                        previous & builder
         | 
| 96 | 
            -
                      end
         | 
| 86 | 
            +
                    combined_builder = builders.inject do |previous, builder|
         | 
| 87 | 
            +
                      previous & builder
         | 
| 97 88 | 
             
                    end
         | 
| 98 89 | 
             
                    combined_builder.build(expression, variable)
         | 
| 99 90 | 
             
                  end
         | 
    
        data/rroonga-build.rb
    CHANGED
    
    | @@ -20,15 +20,15 @@ module RroongaBuild | |
| 20 20 | 
             
              module RequiredGroongaVersion
         | 
| 21 21 | 
             
                MAJOR = 6
         | 
| 22 22 | 
             
                MINOR = 0
         | 
| 23 | 
            -
                MICRO =  | 
| 23 | 
            +
                MICRO = 2
         | 
| 24 24 | 
             
                VERSION = [MAJOR, MINOR, MICRO]
         | 
| 25 | 
            -
                RELEASED_DATE = Time.utc(2016,  | 
| 25 | 
            +
                RELEASED_DATE = Time.utc(2016, 4, 29)
         | 
| 26 26 | 
             
              end
         | 
| 27 27 |  | 
| 28 28 | 
             
              module LatestGroongaVersion
         | 
| 29 29 | 
             
                MAJOR = 6
         | 
| 30 30 | 
             
                MINOR = 0
         | 
| 31 | 
            -
                MICRO =  | 
| 31 | 
            +
                MICRO = 2
         | 
| 32 32 | 
             
                VERSION = [MAJOR, MINOR, MICRO]
         | 
| 33 33 | 
             
              end
         | 
| 34 34 |  | 
    
        data/rroonga.gemspec
    CHANGED
    
    | @@ -1,6 +1,6 @@ | |
| 1 1 | 
             
            # -*- mode: ruby; coding: utf-8 -*-
         | 
| 2 2 | 
             
            #
         | 
| 3 | 
            -
            # Copyright (C) 2012- | 
| 3 | 
            +
            # Copyright (C) 2012-2016  Kouhei Sutou <kou@clear-code.com>
         | 
| 4 4 | 
             
            #
         | 
| 5 5 | 
             
            # This library is free software; you can redistribute it and/or
         | 
| 6 6 | 
             
            # modify it under the terms of the GNU Lesser General Public
         | 
| @@ -86,7 +86,6 @@ Gem::Specification.new do |s| | |
| 86 86 | 
             
              s.add_runtime_dependency("json")
         | 
| 87 87 | 
             
              s.add_runtime_dependency("archive-zip")
         | 
| 88 88 | 
             
              s.add_development_dependency("test-unit", [">= 3.0.0"])
         | 
| 89 | 
            -
              s.add_development_dependency("test-unit-notify")
         | 
| 90 89 | 
             
              s.add_development_dependency("rake")
         | 
| 91 90 | 
             
              s.add_development_dependency("rake-compiler", [">= 0.9.5"])
         | 
| 92 91 | 
             
              s.add_development_dependency("rake-compiler-dock")
         | 
    
        data/test/run-test.rb
    CHANGED
    
    | @@ -1,6 +1,6 @@ | |
| 1 1 | 
             
            #!/usr/bin/env ruby
         | 
| 2 2 | 
             
            #
         | 
| 3 | 
            -
            # Copyright (C) 2009- | 
| 3 | 
            +
            # Copyright (C) 2009-2016  Kouhei Sutou <kou@clear-code.com>
         | 
| 4 4 | 
             
            #
         | 
| 5 5 | 
             
            # This library is free software; you can redistribute it and/or
         | 
| 6 6 | 
             
            # modify it under the terms of the GNU Lesser General Public
         | 
| @@ -37,7 +37,7 @@ if make | |
| 37 37 | 
             
            end
         | 
| 38 38 |  | 
| 39 39 | 
             
            require "test-unit"
         | 
| 40 | 
            -
            require "test/unit/ | 
| 40 | 
            +
            require "test/unit/priority"
         | 
| 41 41 |  | 
| 42 42 | 
             
            Test::Unit::Priority.enable
         | 
| 43 43 |  |