rroonga 5.0.0 → 5.0.1
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/.yardopts +1 -0
- data/Rakefile +1 -10
- data/ext/groonga/extconf.rb +3 -1
- data/ext/groonga/rb-grn-array.c +1 -1
- data/ext/groonga/rb-grn-column.c +33 -67
- data/ext/groonga/rb-grn-context.c +5 -5
- data/ext/groonga/rb-grn-database.c +2 -2
- data/ext/groonga/rb-grn-double-array-trie.c +4 -2
- data/ext/groonga/rb-grn-encoding-support.c +7 -1
- data/ext/groonga/rb-grn-equal-operator.c +85 -0
- data/ext/groonga/rb-grn-exception.c +17 -0
- data/ext/groonga/rb-grn-expression.c +85 -43
- data/ext/groonga/rb-grn-greater-equal-operator.c +88 -0
- data/ext/groonga/rb-grn-greater-operator.c +85 -0
- data/ext/groonga/rb-grn-hash.c +1 -1
- data/ext/groonga/rb-grn-index-column.c +150 -11
- data/ext/groonga/rb-grn-less-equal-operator.c +88 -0
- data/ext/groonga/rb-grn-less-operator.c +85 -0
- data/ext/groonga/rb-grn-logger.c +5 -5
- data/ext/groonga/rb-grn-match-operator.c +86 -0
- data/ext/groonga/rb-grn-normalizer.c +8 -1
- data/ext/groonga/rb-grn-not-equal-operator.c +85 -0
- data/ext/groonga/rb-grn-object.c +170 -36
- data/ext/groonga/rb-grn-operator.c +395 -172
- data/ext/groonga/rb-grn-patricia-trie.c +10 -8
- data/ext/groonga/rb-grn-plugin.c +51 -3
- data/ext/groonga/rb-grn-prefix-operator.c +86 -0
- data/ext/groonga/rb-grn-procedure-type.c +4 -0
- data/ext/groonga/rb-grn-query-logger.c +4 -4
- data/ext/groonga/rb-grn-regexp-operator.c +85 -0
- data/ext/groonga/rb-grn-snippet.c +1 -1
- data/ext/groonga/rb-grn-table-key-support.c +9 -5
- data/ext/groonga/rb-grn-table.c +52 -66
- data/ext/groonga/rb-grn-type.c +1 -1
- data/ext/groonga/rb-grn-utils.c +22 -3
- data/ext/groonga/rb-grn.h +31 -4
- data/ext/groonga/rb-groonga.c +9 -9
- data/lib/groonga/context.rb +31 -0
- data/lib/groonga/expression-builder.rb +14 -1
- data/lib/groonga/record.rb +10 -8
- data/lib/groonga/schema.rb +3 -1
- data/rroonga-build.rb +2 -2
- data/rroonga.gemspec +3 -3
- data/test/groonga-test-utils.rb +4 -0
- data/test/test-column.rb +28 -26
- data/test/test-exception.rb +1 -0
- data/test/test-expression-builder.rb +83 -1
- data/test/test-expression.rb +80 -48
- data/test/test-index-column.rb +102 -29
- data/test/test-normalizer.rb +35 -29
- data/test/test-operator.rb +214 -0
- data/test/test-plugin.rb +24 -6
- data/test/test-procedure.rb +29 -0
- data/test/test-schema-type.rb +14 -0
- data/test/test-table-select-mecab.rb +1 -4
- data/test/test-table.rb +7 -0
- data/test/test-token-regexp.rb +30 -0
- data/test/test-type.rb +24 -0
- metadata +61 -49
- data/doc/text/news.textile +0 -1217
@@ -0,0 +1,88 @@
|
|
1
|
+
/* -*- coding: utf-8; mode: C; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
2
|
+
/*
|
3
|
+
Copyright (C) 2015 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
|
+
VALUE rb_cGrnLessEqualOperator;
|
22
|
+
|
23
|
+
/*
|
24
|
+
* Executes a less-or-equal operation.
|
25
|
+
*
|
26
|
+
* @example Executes less-or-equal operations with the default context
|
27
|
+
* Groonga::Operator::LESS_EQUAL.exec(1, 1) # => true
|
28
|
+
* Groonga::Operator::LESS_EQUAL.exec(1, 2) # => true
|
29
|
+
* Groonga::Operator::LESS_EQUAL.exec(2, 1) # => false
|
30
|
+
*
|
31
|
+
* @example Executes less-or-equal operations with the specified context
|
32
|
+
* context = Groonga::Context.new
|
33
|
+
* Groonga::Operator::LESS_EQUAL.exec(1, 1,
|
34
|
+
* :context => context) # => true
|
35
|
+
* Groonga::Operator::LESS_EQUAL.exec(1, 2,
|
36
|
+
* :context => context) # => true
|
37
|
+
* Groonga::Operator::LESS_EQUAL.exec(2, 1,
|
38
|
+
* :context => context) # => false
|
39
|
+
*
|
40
|
+
* @overload exec(x, y, options={})
|
41
|
+
* @param x [::Object] The left hand side value.
|
42
|
+
* @param y [::Object] The right hand side value.
|
43
|
+
* @param options [::Hash] The options.
|
44
|
+
* @option options [Groonga::Context] (Groonga::Context.default)
|
45
|
+
* The context to executes the operation.
|
46
|
+
* @return [Boolean] `true` if `x` is less than or equal to`y`,
|
47
|
+
* `false` otherwise.
|
48
|
+
*/
|
49
|
+
static VALUE
|
50
|
+
rb_grn_less_equal_operator_exec (int argc, VALUE *argv, VALUE self)
|
51
|
+
{
|
52
|
+
grn_bool less_equal;
|
53
|
+
VALUE rb_x;
|
54
|
+
VALUE rb_y;
|
55
|
+
VALUE rb_options;
|
56
|
+
VALUE rb_context;
|
57
|
+
grn_ctx *context;
|
58
|
+
grn_obj x;
|
59
|
+
grn_obj y;
|
60
|
+
|
61
|
+
rb_scan_args(argc, argv, "21", &rb_x, &rb_y, &rb_options);
|
62
|
+
|
63
|
+
rb_grn_scan_options(rb_options,
|
64
|
+
"context", &rb_context,
|
65
|
+
NULL);
|
66
|
+
context = rb_grn_context_ensure(&rb_context);
|
67
|
+
|
68
|
+
GRN_VOID_INIT(&x);
|
69
|
+
GRN_VOID_INIT(&y);
|
70
|
+
RVAL2GRNBULK(rb_x, context, &x);
|
71
|
+
RVAL2GRNBULK(rb_y, context, &y);
|
72
|
+
less_equal = grn_operator_exec_less_equal(context, &x, &y);
|
73
|
+
GRN_OBJ_FIN(context, &x);
|
74
|
+
GRN_OBJ_FIN(context, &y);
|
75
|
+
|
76
|
+
return CBOOL2RVAL(less_equal);
|
77
|
+
}
|
78
|
+
|
79
|
+
void
|
80
|
+
rb_grn_init_less_equal_operator (VALUE mGrn)
|
81
|
+
{
|
82
|
+
rb_cGrnLessEqualOperator = rb_define_class_under(mGrn,
|
83
|
+
"LessEqualOperator",
|
84
|
+
rb_cGrnOperator);
|
85
|
+
|
86
|
+
rb_define_method(rb_cGrnLessEqualOperator, "exec",
|
87
|
+
rb_grn_less_equal_operator_exec, -1);
|
88
|
+
}
|
@@ -0,0 +1,85 @@
|
|
1
|
+
/* -*- coding: utf-8; mode: C; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
2
|
+
/*
|
3
|
+
Copyright (C) 2015 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
|
+
VALUE rb_cGrnLessOperator;
|
22
|
+
|
23
|
+
/*
|
24
|
+
* Executes a less operation.
|
25
|
+
*
|
26
|
+
* @example Executes less operations with the default context
|
27
|
+
* Groonga::Operator::LESS.exec(1, 2) # => true
|
28
|
+
* Groonga::Operator::LESS.exec(2, 1) # => false
|
29
|
+
*
|
30
|
+
* @example Executes less operations with the specified context
|
31
|
+
* context = Groonga::Context.new
|
32
|
+
* Groonga::Operator::LESS.exec(1, 2,
|
33
|
+
* :context => context) # => true
|
34
|
+
* Groonga::Operator::LESS.exec(2, 1,
|
35
|
+
* :context => context) # => false
|
36
|
+
*
|
37
|
+
* @overload exec(x, y, options={})
|
38
|
+
* @param x [::Object] The left hand side value.
|
39
|
+
* @param y [::Object] The right hand side value.
|
40
|
+
* @param options [::Hash] The options.
|
41
|
+
* @option options [Groonga::Context] (Groonga::Context.default)
|
42
|
+
* The context to executes the operation.
|
43
|
+
* @return [Boolean] `true` if `x` is less than `y`, `false`
|
44
|
+
* otherwise.
|
45
|
+
*/
|
46
|
+
static VALUE
|
47
|
+
rb_grn_less_operator_exec (int argc, VALUE *argv, VALUE self)
|
48
|
+
{
|
49
|
+
grn_bool less;
|
50
|
+
VALUE rb_x;
|
51
|
+
VALUE rb_y;
|
52
|
+
VALUE rb_options;
|
53
|
+
VALUE rb_context;
|
54
|
+
grn_ctx *context;
|
55
|
+
grn_obj x;
|
56
|
+
grn_obj y;
|
57
|
+
|
58
|
+
rb_scan_args(argc, argv, "21", &rb_x, &rb_y, &rb_options);
|
59
|
+
|
60
|
+
rb_grn_scan_options(rb_options,
|
61
|
+
"context", &rb_context,
|
62
|
+
NULL);
|
63
|
+
context = rb_grn_context_ensure(&rb_context);
|
64
|
+
|
65
|
+
GRN_VOID_INIT(&x);
|
66
|
+
GRN_VOID_INIT(&y);
|
67
|
+
RVAL2GRNBULK(rb_x, context, &x);
|
68
|
+
RVAL2GRNBULK(rb_y, context, &y);
|
69
|
+
less = grn_operator_exec_less(context, &x, &y);
|
70
|
+
GRN_OBJ_FIN(context, &x);
|
71
|
+
GRN_OBJ_FIN(context, &y);
|
72
|
+
|
73
|
+
return CBOOL2RVAL(less);
|
74
|
+
}
|
75
|
+
|
76
|
+
void
|
77
|
+
rb_grn_init_less_operator (VALUE mGrn)
|
78
|
+
{
|
79
|
+
rb_cGrnLessOperator = rb_define_class_under(mGrn,
|
80
|
+
"LessOperator",
|
81
|
+
rb_cGrnOperator);
|
82
|
+
|
83
|
+
rb_define_method(rb_cGrnLessOperator, "exec",
|
84
|
+
rb_grn_less_operator_exec, -1);
|
85
|
+
}
|
data/ext/groonga/rb-grn-logger.c
CHANGED
@@ -159,10 +159,10 @@ rb_grn_logger_log (grn_ctx *ctx, grn_log_level level,
|
|
159
159
|
/* TODO: use rb_protect(). */
|
160
160
|
rb_funcall(handler, id_log, 5,
|
161
161
|
GRNLOGLEVEL2RVAL(level),
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
162
|
+
rb_str_new_cstr(timestamp),
|
163
|
+
rb_str_new_cstr(title),
|
164
|
+
rb_str_new_cstr(message),
|
165
|
+
rb_str_new_cstr(location));
|
166
166
|
}
|
167
167
|
|
168
168
|
static void
|
@@ -359,7 +359,7 @@ rb_grn_logger_s_get_path (VALUE klass)
|
|
359
359
|
|
360
360
|
path = grn_default_logger_get_path();
|
361
361
|
if (path) {
|
362
|
-
rb_path =
|
362
|
+
rb_path = rb_str_new_cstr(path);
|
363
363
|
}
|
364
364
|
return rb_path;
|
365
365
|
}
|
@@ -0,0 +1,86 @@
|
|
1
|
+
/* -*- coding: utf-8; mode: C; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
2
|
+
/*
|
3
|
+
Copyright (C) 2015 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
|
+
VALUE rb_cGrnMatchOperator;
|
22
|
+
|
23
|
+
/*
|
24
|
+
* Executes a match operation. Match operation checks whether `text`
|
25
|
+
* contains `sub_text` or not.
|
26
|
+
*
|
27
|
+
* @example Executes match operations with the default context
|
28
|
+
* Groonga::Operator::MATCH.exec("Hello Rroonga", "Rroonga") # => true
|
29
|
+
* Groonga::Operator::MATCH.exec("Hello Rroonga", "Groonga") # => false
|
30
|
+
*
|
31
|
+
* @example Executes match operations with the specified context
|
32
|
+
* context = Groonga::Context.new
|
33
|
+
* Groonga::Operator::MATCH.exec("Hello Rroonga", "Rroonga",
|
34
|
+
* :context => context) # => true
|
35
|
+
* Groonga::Operator::MATCH.exec("Hello Rroonga", "Groonga",
|
36
|
+
* :context => context) # => false
|
37
|
+
*
|
38
|
+
* @overload exec(text, sub_text, options={})
|
39
|
+
* @param text [String] The text to be matched.
|
40
|
+
* @param sub_text [String] The sub text to be contained.
|
41
|
+
* @param options [::Hash] The options.
|
42
|
+
* @option options [Groonga::Context] (Groonga::Context.default)
|
43
|
+
* The context to executes the operation.
|
44
|
+
* @return [Boolean] `true` if `text` contains `sub_text`, `false`
|
45
|
+
* otherwise.
|
46
|
+
*/
|
47
|
+
static VALUE
|
48
|
+
rb_grn_match_operator_exec (int argc, VALUE *argv, VALUE self)
|
49
|
+
{
|
50
|
+
grn_bool matched;
|
51
|
+
VALUE rb_text;
|
52
|
+
VALUE rb_sub_text;
|
53
|
+
VALUE rb_options;
|
54
|
+
VALUE rb_context;
|
55
|
+
grn_ctx *context;
|
56
|
+
grn_obj text;
|
57
|
+
grn_obj sub_text;
|
58
|
+
|
59
|
+
rb_scan_args(argc, argv, "21", &rb_text, &rb_sub_text, &rb_options);
|
60
|
+
|
61
|
+
rb_grn_scan_options(rb_options,
|
62
|
+
"context", &rb_context,
|
63
|
+
NULL);
|
64
|
+
context = rb_grn_context_ensure(&rb_context);
|
65
|
+
|
66
|
+
GRN_VOID_INIT(&text);
|
67
|
+
GRN_VOID_INIT(&sub_text);
|
68
|
+
RVAL2GRNBULK(rb_text, context, &text);
|
69
|
+
RVAL2GRNBULK(rb_sub_text, context, &sub_text);
|
70
|
+
matched = grn_operator_exec_match(context, &text, &sub_text);
|
71
|
+
GRN_OBJ_FIN(context, &text);
|
72
|
+
GRN_OBJ_FIN(context, &sub_text);
|
73
|
+
|
74
|
+
return CBOOL2RVAL(matched);
|
75
|
+
}
|
76
|
+
|
77
|
+
void
|
78
|
+
rb_grn_init_match_operator (VALUE mGrn)
|
79
|
+
{
|
80
|
+
rb_cGrnMatchOperator = rb_define_class_under(mGrn,
|
81
|
+
"MatchOperator",
|
82
|
+
rb_cGrnOperator);
|
83
|
+
|
84
|
+
rb_define_method(rb_cGrnMatchOperator, "exec",
|
85
|
+
rb_grn_match_operator_exec, -1);
|
86
|
+
}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
/* -*- coding: utf-8; mode: C; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
2
2
|
/*
|
3
|
-
Copyright (C) 2012 Kouhei Sutou <kou@clear-code.com>
|
3
|
+
Copyright (C) 2012-2015 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
|
@@ -73,6 +73,10 @@ rb_grn_normalizer_s_normalize (int argc, VALUE *argv, VALUE klass)
|
|
73
73
|
|
74
74
|
context = rb_grn_context_ensure(&rb_context);
|
75
75
|
rb_encoded_string = rb_grn_context_rb_string_encode(context, rb_string);
|
76
|
+
if (RSTRING_LEN(rb_encoded_string) == 0) {
|
77
|
+
return rb_grn_context_rb_string_new(context, "", 0);
|
78
|
+
}
|
79
|
+
|
76
80
|
if (NIL_P(rb_remove_blank_p)) {
|
77
81
|
rb_remove_blank_p = Qtrue;
|
78
82
|
}
|
@@ -91,6 +95,9 @@ rb_grn_normalizer_s_normalize (int argc, VALUE *argv, VALUE klass)
|
|
91
95
|
normalizer,
|
92
96
|
flags);
|
93
97
|
rb_grn_context_check(context, argv[0]);
|
98
|
+
if (!grn_string) {
|
99
|
+
return Qnil;
|
100
|
+
}
|
94
101
|
grn_string_get_normalized(context, grn_string,
|
95
102
|
&normalized_string, &normalized_string_length,
|
96
103
|
NULL);
|
@@ -0,0 +1,85 @@
|
|
1
|
+
/* -*- coding: utf-8; mode: C; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
2
|
+
/*
|
3
|
+
Copyright (C) 2015 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
|
+
VALUE rb_cGrnNotEqualOperator;
|
22
|
+
|
23
|
+
/*
|
24
|
+
* Executes a not-equal operation.
|
25
|
+
*
|
26
|
+
* @example Executes not-equal operations with the default context
|
27
|
+
* Groonga::Operator::NOT_EQUAL.exec("hello", "Hello") # => true
|
28
|
+
* Groonga::Operator::NOT_EQUAL.exec("hello", "hello") # => false
|
29
|
+
*
|
30
|
+
* @example Executes not-equal operations with the specified context
|
31
|
+
* context = Groonga::Context.new
|
32
|
+
* Groonga::Operator::NOT_EQUAL.exec("hello", "Hello",
|
33
|
+
* :context => context) # => true
|
34
|
+
* Groonga::Operator::NOT_EQUAL.exec("hello", "hello",
|
35
|
+
* :context => context) # => false
|
36
|
+
*
|
37
|
+
* @overload exec(x, y, options={})
|
38
|
+
* @param x [::Object] The left hand side value.
|
39
|
+
* @param y [::Object] The right hand side value.
|
40
|
+
* @param options [::Hash] The options.
|
41
|
+
* @option options [Groonga::Context] (Groonga::Context.default)
|
42
|
+
* The context to executes the operation.
|
43
|
+
* @return [Boolean] `true` if `x` does not equal to `y`, `false`
|
44
|
+
* otherwise.
|
45
|
+
*/
|
46
|
+
static VALUE
|
47
|
+
rb_grn_not_equal_operator_exec (int argc, VALUE *argv, VALUE self)
|
48
|
+
{
|
49
|
+
grn_bool not_equal;
|
50
|
+
VALUE rb_x;
|
51
|
+
VALUE rb_y;
|
52
|
+
VALUE rb_options;
|
53
|
+
VALUE rb_context;
|
54
|
+
grn_ctx *context;
|
55
|
+
grn_obj x;
|
56
|
+
grn_obj y;
|
57
|
+
|
58
|
+
rb_scan_args(argc, argv, "21", &rb_x, &rb_y, &rb_options);
|
59
|
+
|
60
|
+
rb_grn_scan_options(rb_options,
|
61
|
+
"context", &rb_context,
|
62
|
+
NULL);
|
63
|
+
context = rb_grn_context_ensure(&rb_context);
|
64
|
+
|
65
|
+
GRN_VOID_INIT(&x);
|
66
|
+
GRN_VOID_INIT(&y);
|
67
|
+
RVAL2GRNBULK(rb_x, context, &x);
|
68
|
+
RVAL2GRNBULK(rb_y, context, &y);
|
69
|
+
not_equal = grn_operator_exec_not_equal(context, &x, &y);
|
70
|
+
GRN_OBJ_FIN(context, &x);
|
71
|
+
GRN_OBJ_FIN(context, &y);
|
72
|
+
|
73
|
+
return CBOOL2RVAL(not_equal);
|
74
|
+
}
|
75
|
+
|
76
|
+
void
|
77
|
+
rb_grn_init_not_equal_operator (VALUE mGrn)
|
78
|
+
{
|
79
|
+
rb_cGrnNotEqualOperator = rb_define_class_under(mGrn,
|
80
|
+
"NotEqualOperator",
|
81
|
+
rb_cGrnOperator);
|
82
|
+
|
83
|
+
rb_define_method(rb_cGrnNotEqualOperator, "exec",
|
84
|
+
rb_grn_not_equal_operator_exec, -1);
|
85
|
+
}
|
data/ext/groonga/rb-grn-object.c
CHANGED
@@ -538,17 +538,15 @@ rb_grn_named_object_set_name (RbGrnNamedObject *rb_grn_named_object,
|
|
538
538
|
rb_grn_named_object->name = NULL;
|
539
539
|
}
|
540
540
|
if (name_size > 0) {
|
541
|
-
RbGrnObject *rb_grn_object;
|
542
541
|
rb_grn_named_object->name = ALLOC_N(char, name_size + 1);
|
543
542
|
memcpy(rb_grn_named_object->name, name, name_size);
|
544
543
|
rb_grn_named_object->name[name_size] = '\0';
|
545
|
-
rb_grn_object = RB_GRN_OBJECT(rb_grn_named_object);
|
546
544
|
debug("set-name: %p:%p:%p %s(%#x): <%.*s>\n",
|
547
|
-
|
548
|
-
|
545
|
+
RB_GRN_OBJECT(rb_grn_named_object)->context,
|
546
|
+
RB_GRN_OBJECT(rb_grn_named_object)->object,
|
549
547
|
rb_grn_named_object,
|
550
|
-
rb_grn_inspect_type(
|
551
|
-
|
548
|
+
rb_grn_inspect_type(RB_GRN_OBJECT(rb_grn_named_object)->header.type),
|
549
|
+
RB_GRN_OBJECT(rb_grn_named_object)->object->header.type,
|
552
550
|
name_size, name);
|
553
551
|
}
|
554
552
|
rb_grn_named_object->name_size = name_size;
|
@@ -837,13 +835,13 @@ rb_grn_object_inspect_content_flags_with_label (VALUE inspected,
|
|
837
835
|
|
838
836
|
if (0) {
|
839
837
|
if (flags & GRN_OBJ_TABLE_HASH_KEY)
|
840
|
-
rb_ary_push(inspected_flags,
|
838
|
+
rb_ary_push(inspected_flags, rb_str_new_cstr("TABLE_HASH_KEY"));
|
841
839
|
if (flags & GRN_OBJ_TABLE_PAT_KEY)
|
842
|
-
rb_ary_push(inspected_flags,
|
840
|
+
rb_ary_push(inspected_flags, rb_str_new_cstr("TABLE_PAT_KEY"));
|
843
841
|
if (flags & GRN_OBJ_TABLE_DAT_KEY)
|
844
|
-
rb_ary_push(inspected_flags,
|
842
|
+
rb_ary_push(inspected_flags, rb_str_new_cstr("TABLE_DAT_KEY"));
|
845
843
|
if (flags & GRN_OBJ_TABLE_NO_KEY)
|
846
|
-
rb_ary_push(inspected_flags,
|
844
|
+
rb_ary_push(inspected_flags, rb_str_new_cstr("TABLE_NO_KEY"));
|
847
845
|
}
|
848
846
|
|
849
847
|
switch (object->header.type) {
|
@@ -851,20 +849,20 @@ rb_grn_object_inspect_content_flags_with_label (VALUE inspected,
|
|
851
849
|
case GRN_COLUMN_VAR_SIZE:
|
852
850
|
case GRN_TYPE:
|
853
851
|
if (flags & GRN_OBJ_KEY_VAR_SIZE) {
|
854
|
-
rb_ary_push(inspected_flags,
|
852
|
+
rb_ary_push(inspected_flags, rb_str_new_cstr("KEY_VAR_SIZE"));
|
855
853
|
} else {
|
856
854
|
switch (flags & GRN_OBJ_KEY_MASK) {
|
857
855
|
case GRN_OBJ_KEY_UINT:
|
858
|
-
rb_ary_push(inspected_flags,
|
856
|
+
rb_ary_push(inspected_flags, rb_str_new_cstr("KEY_UINT"));
|
859
857
|
break;
|
860
858
|
case GRN_OBJ_KEY_INT:
|
861
|
-
rb_ary_push(inspected_flags,
|
859
|
+
rb_ary_push(inspected_flags, rb_str_new_cstr("KEY_INT"));
|
862
860
|
break;
|
863
861
|
case GRN_OBJ_KEY_FLOAT:
|
864
|
-
rb_ary_push(inspected_flags,
|
862
|
+
rb_ary_push(inspected_flags, rb_str_new_cstr("KEY_FLOAT"));
|
865
863
|
break;
|
866
864
|
case GRN_OBJ_KEY_GEO_POINT:
|
867
|
-
rb_ary_push(inspected_flags,
|
865
|
+
rb_ary_push(inspected_flags, rb_str_new_cstr("KEY_GEO_POINT"));
|
868
866
|
break;
|
869
867
|
default:
|
870
868
|
break;
|
@@ -880,9 +878,9 @@ rb_grn_object_inspect_content_flags_with_label (VALUE inspected,
|
|
880
878
|
case GRN_TABLE_PAT_KEY:
|
881
879
|
case GRN_TABLE_DAT_KEY:
|
882
880
|
if (flags & GRN_OBJ_KEY_WITH_SIS)
|
883
|
-
rb_ary_push(inspected_flags,
|
881
|
+
rb_ary_push(inspected_flags, rb_str_new_cstr("KEY_WITH_SIS"));
|
884
882
|
if (flags & GRN_OBJ_KEY_NORMALIZE)
|
885
|
-
rb_ary_push(inspected_flags,
|
883
|
+
rb_ary_push(inspected_flags, rb_str_new_cstr("KEY_NORMALIZE"));
|
886
884
|
break;
|
887
885
|
default:
|
888
886
|
break;
|
@@ -890,57 +888,57 @@ rb_grn_object_inspect_content_flags_with_label (VALUE inspected,
|
|
890
888
|
|
891
889
|
if (0) {
|
892
890
|
if (flags & GRN_OBJ_COLUMN_SCALAR)
|
893
|
-
rb_ary_push(inspected_flags,
|
891
|
+
rb_ary_push(inspected_flags, rb_str_new_cstr("COLUMN_SCALAR"));
|
894
892
|
if (flags & GRN_OBJ_COLUMN_VECTOR)
|
895
|
-
rb_ary_push(inspected_flags,
|
893
|
+
rb_ary_push(inspected_flags, rb_str_new_cstr("COLUMN_VECTOR"));
|
896
894
|
if (flags & GRN_OBJ_COLUMN_INDEX)
|
897
|
-
rb_ary_push(inspected_flags,
|
895
|
+
rb_ary_push(inspected_flags, rb_str_new_cstr("COLUMN_INDEX"));
|
898
896
|
}
|
899
897
|
|
900
898
|
switch (object->header.type) {
|
901
899
|
case GRN_COLUMN_FIX_SIZE:
|
902
900
|
case GRN_COLUMN_VAR_SIZE:
|
903
901
|
if (flags & GRN_OBJ_COMPRESS_ZLIB)
|
904
|
-
rb_ary_push(inspected_flags,
|
902
|
+
rb_ary_push(inspected_flags, rb_str_new_cstr("COMPRESS_ZLIB"));
|
905
903
|
if (flags & GRN_OBJ_COMPRESS_LZ4)
|
906
|
-
rb_ary_push(inspected_flags,
|
904
|
+
rb_ary_push(inspected_flags, rb_str_new_cstr("COMPRESS_LZ4"));
|
907
905
|
break;
|
908
906
|
case GRN_COLUMN_INDEX:
|
909
907
|
if (flags & GRN_OBJ_WITH_SECTION)
|
910
|
-
rb_ary_push(inspected_flags,
|
908
|
+
rb_ary_push(inspected_flags, rb_str_new_cstr("WITH_SECTION"));
|
911
909
|
if (flags & GRN_OBJ_WITH_WEIGHT)
|
912
|
-
rb_ary_push(inspected_flags,
|
910
|
+
rb_ary_push(inspected_flags, rb_str_new_cstr("WITH_WEIGHT"));
|
913
911
|
if (flags & GRN_OBJ_WITH_POSITION)
|
914
|
-
rb_ary_push(inspected_flags,
|
912
|
+
rb_ary_push(inspected_flags, rb_str_new_cstr("WITH_POSITION"));
|
915
913
|
break;
|
916
914
|
default:
|
917
915
|
break;
|
918
916
|
}
|
919
917
|
|
920
918
|
if (flags & GRN_OBJ_RING_BUFFER)
|
921
|
-
rb_ary_push(inspected_flags,
|
919
|
+
rb_ary_push(inspected_flags, rb_str_new_cstr("RING_BUFFER"));
|
922
920
|
|
923
921
|
if (flags & GRN_OBJ_WITH_SUBREC) {
|
924
|
-
rb_ary_push(inspected_flags,
|
922
|
+
rb_ary_push(inspected_flags, rb_str_new_cstr("WITH_SUBREC"));
|
925
923
|
|
926
924
|
if (flags & GRN_OBJ_UNIT_DOCUMENT_SECTION)
|
927
|
-
rb_ary_push(inspected_flags,
|
925
|
+
rb_ary_push(inspected_flags, rb_str_new_cstr("UNIT_DOCUMENT_SECTION"));
|
928
926
|
if (flags & GRN_OBJ_UNIT_DOCUMENT_POSITION)
|
929
|
-
rb_ary_push(inspected_flags,
|
927
|
+
rb_ary_push(inspected_flags, rb_str_new_cstr("UNIT_DOCUMENT_POSITION"));
|
930
928
|
|
931
929
|
if (flags & GRN_OBJ_UNIT_SECTION_POSITION)
|
932
|
-
rb_ary_push(inspected_flags,
|
930
|
+
rb_ary_push(inspected_flags, rb_str_new_cstr("UNIT_SECTION_POSITION"));
|
933
931
|
|
934
932
|
if (flags & GRN_OBJ_UNIT_USERDEF_DOCUMENT)
|
935
|
-
rb_ary_push(inspected_flags,
|
933
|
+
rb_ary_push(inspected_flags, rb_str_new_cstr("UNIT_USERDEF_DOCUMENT"));
|
936
934
|
if (flags & GRN_OBJ_UNIT_USERDEF_SECTION)
|
937
|
-
rb_ary_push(inspected_flags,
|
935
|
+
rb_ary_push(inspected_flags, rb_str_new_cstr("UNIT_USERDEF_SECTION"));
|
938
936
|
if (flags & GRN_OBJ_UNIT_USERDEF_POSITION)
|
939
|
-
rb_ary_push(inspected_flags,
|
937
|
+
rb_ary_push(inspected_flags, rb_str_new_cstr("UNIT_USERDEF_POSITION"));
|
940
938
|
}
|
941
939
|
|
942
940
|
rb_str_cat2(inspected, "<");
|
943
|
-
rb_str_concat(inspected, rb_ary_join(inspected_flags,
|
941
|
+
rb_str_concat(inspected, rb_ary_join(inspected_flags, rb_str_new_cstr("|")));
|
944
942
|
rb_str_cat2(inspected, ">");
|
945
943
|
|
946
944
|
return inspected;
|
@@ -1010,7 +1008,7 @@ rb_grn_object_inspect (VALUE self)
|
|
1010
1008
|
{
|
1011
1009
|
VALUE inspected;
|
1012
1010
|
|
1013
|
-
inspected =
|
1011
|
+
inspected = rb_str_new_cstr("");
|
1014
1012
|
rb_grn_object_inspect_header(self, inspected);
|
1015
1013
|
rb_grn_object_inspect_content(self, inspected);
|
1016
1014
|
rb_grn_object_inspect_footer(self, inspected);
|
@@ -1064,7 +1062,7 @@ rb_grn_object_get_path (VALUE self)
|
|
1064
1062
|
if (!path)
|
1065
1063
|
return Qnil;
|
1066
1064
|
else
|
1067
|
-
return
|
1065
|
+
return rb_str_new_cstr(path);
|
1068
1066
|
}
|
1069
1067
|
|
1070
1068
|
/*
|
@@ -1504,6 +1502,134 @@ rb_grn_object_builtin_p (VALUE self)
|
|
1504
1502
|
return CBOOL2RVAL(builtin);
|
1505
1503
|
}
|
1506
1504
|
|
1505
|
+
/*
|
1506
|
+
* Checks whether the object is table or not.
|
1507
|
+
*
|
1508
|
+
* @overload table?
|
1509
|
+
* @return [Boolean] `true` if the object is table, `false` otherwise.
|
1510
|
+
*
|
1511
|
+
* @since 5.0.1
|
1512
|
+
*/
|
1513
|
+
static VALUE
|
1514
|
+
rb_grn_object_table_p (VALUE self)
|
1515
|
+
{
|
1516
|
+
grn_ctx *context;
|
1517
|
+
grn_obj *object;
|
1518
|
+
grn_bool table_p = GRN_FALSE;
|
1519
|
+
|
1520
|
+
rb_grn_object_deconstruct(SELF(self), &object, &context,
|
1521
|
+
NULL, NULL, NULL, NULL);
|
1522
|
+
|
1523
|
+
if (context && object) {
|
1524
|
+
table_p = grn_obj_is_table(context, object);
|
1525
|
+
}
|
1526
|
+
|
1527
|
+
return CBOOL2RVAL(table_p);
|
1528
|
+
}
|
1529
|
+
|
1530
|
+
/*
|
1531
|
+
* Checks whether the object is procedure or not.
|
1532
|
+
*
|
1533
|
+
* @overload procedure?
|
1534
|
+
* @return [Boolean] `true` if the object is procedure, `false` otherwise.
|
1535
|
+
*
|
1536
|
+
* @since 5.0.1
|
1537
|
+
*/
|
1538
|
+
static VALUE
|
1539
|
+
rb_grn_object_procedure_p (VALUE self)
|
1540
|
+
{
|
1541
|
+
grn_ctx *context;
|
1542
|
+
grn_obj *object;
|
1543
|
+
grn_bool procedure_p = GRN_FALSE;
|
1544
|
+
|
1545
|
+
rb_grn_object_deconstruct(SELF(self), &object, &context,
|
1546
|
+
NULL, NULL, NULL, NULL);
|
1547
|
+
|
1548
|
+
if (context && object) {
|
1549
|
+
procedure_p = grn_obj_is_proc(context, object);
|
1550
|
+
}
|
1551
|
+
|
1552
|
+
return CBOOL2RVAL(procedure_p);
|
1553
|
+
}
|
1554
|
+
|
1555
|
+
/*
|
1556
|
+
* Checks whether the object is function procedure or not.
|
1557
|
+
*
|
1558
|
+
* @overload function_procedure?
|
1559
|
+
* @return [Boolean] `true` if the object is function procedure,
|
1560
|
+
* `false` otherwise.
|
1561
|
+
*
|
1562
|
+
* @since 5.0.1
|
1563
|
+
*/
|
1564
|
+
static VALUE
|
1565
|
+
rb_grn_object_function_procedure_p (VALUE self)
|
1566
|
+
{
|
1567
|
+
grn_ctx *context;
|
1568
|
+
grn_obj *object;
|
1569
|
+
grn_bool function_procedure_p = GRN_FALSE;
|
1570
|
+
|
1571
|
+
rb_grn_object_deconstruct(SELF(self), &object, &context,
|
1572
|
+
NULL, NULL, NULL, NULL);
|
1573
|
+
|
1574
|
+
if (context && object) {
|
1575
|
+
function_procedure_p = grn_obj_is_function_proc(context, object);
|
1576
|
+
}
|
1577
|
+
|
1578
|
+
return CBOOL2RVAL(function_procedure_p);
|
1579
|
+
}
|
1580
|
+
|
1581
|
+
/*
|
1582
|
+
* Checks whether the object is selector procedure or not.
|
1583
|
+
*
|
1584
|
+
* @overload selector_procedure?
|
1585
|
+
* @return [Boolean] `true` if the object is selector procedure,
|
1586
|
+
* `false` otherwise.
|
1587
|
+
*
|
1588
|
+
* @since 5.0.1
|
1589
|
+
*/
|
1590
|
+
static VALUE
|
1591
|
+
rb_grn_object_selector_procedure_p (VALUE self)
|
1592
|
+
{
|
1593
|
+
grn_ctx *context;
|
1594
|
+
grn_obj *object;
|
1595
|
+
grn_bool selector_procedure_p = GRN_FALSE;
|
1596
|
+
|
1597
|
+
rb_grn_object_deconstruct(SELF(self), &object, &context,
|
1598
|
+
NULL, NULL, NULL, NULL);
|
1599
|
+
|
1600
|
+
if (context && object) {
|
1601
|
+
selector_procedure_p = grn_obj_is_selector_proc(context, object);
|
1602
|
+
}
|
1603
|
+
|
1604
|
+
return CBOOL2RVAL(selector_procedure_p);
|
1605
|
+
}
|
1606
|
+
|
1607
|
+
/*
|
1608
|
+
* Checks whether the object is scorer procedure or not.
|
1609
|
+
*
|
1610
|
+
* @overload scorer_procedure?
|
1611
|
+
* @return [Boolean] `true` if the object is scorer procedure,
|
1612
|
+
* `false` otherwise.
|
1613
|
+
*
|
1614
|
+
* @since 5.0.1
|
1615
|
+
*/
|
1616
|
+
static VALUE
|
1617
|
+
rb_grn_object_scorer_procedure_p (VALUE self)
|
1618
|
+
{
|
1619
|
+
grn_ctx *context;
|
1620
|
+
grn_obj *object;
|
1621
|
+
grn_bool scorer_procedure_p = GRN_FALSE;
|
1622
|
+
|
1623
|
+
rb_grn_object_deconstruct(SELF(self), &object, &context,
|
1624
|
+
NULL, NULL, NULL, NULL);
|
1625
|
+
|
1626
|
+
if (context && object) {
|
1627
|
+
scorer_procedure_p = grn_obj_is_scorer_proc(context, object);
|
1628
|
+
}
|
1629
|
+
|
1630
|
+
return CBOOL2RVAL(scorer_procedure_p);
|
1631
|
+
}
|
1632
|
+
|
1507
1633
|
void
|
1508
1634
|
rb_grn_init_object (VALUE mGrn)
|
1509
1635
|
{
|
@@ -1539,4 +1665,12 @@ rb_grn_init_object (VALUE mGrn)
|
|
1539
1665
|
rb_define_method(rb_cGrnObject, "remove", rb_grn_object_remove, 0);
|
1540
1666
|
|
1541
1667
|
rb_define_method(rb_cGrnObject, "builtin?", rb_grn_object_builtin_p, 0);
|
1668
|
+
rb_define_method(rb_cGrnObject, "table?", rb_grn_object_table_p, 0);
|
1669
|
+
rb_define_method(rb_cGrnObject, "procedure?", rb_grn_object_procedure_p, 0);
|
1670
|
+
rb_define_method(rb_cGrnObject, "function_procedure?",
|
1671
|
+
rb_grn_object_function_procedure_p, 0);
|
1672
|
+
rb_define_method(rb_cGrnObject, "selector_procedure?",
|
1673
|
+
rb_grn_object_selector_procedure_p, 0);
|
1674
|
+
rb_define_method(rb_cGrnObject, "scorer_procedure?",
|
1675
|
+
rb_grn_object_scorer_procedure_p, 0);
|
1542
1676
|
}
|