rroonga 5.0.0 → 5.0.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
}
|