rroonga 6.1.3 → 7.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/doc/text/news.md +28 -0
- data/ext/groonga/rb-grn-column.c +53 -32
- data/ext/groonga/rb-grn-context.c +1 -1
- data/ext/groonga/rb-grn-data-column.c +103 -0
- data/ext/groonga/rb-grn-default-cache.c +104 -0
- data/ext/groonga/rb-grn-index-column.c +93 -15
- data/ext/groonga/rb-grn-inverted-index-cursor.c +269 -0
- data/ext/groonga/rb-grn-object.c +1 -1
- data/ext/groonga/rb-grn-plugin.c +1 -1
- data/ext/groonga/rb-grn-table-cursor.c +1 -1
- data/ext/groonga/rb-grn-table-key-support.c +6 -0
- data/ext/groonga/rb-grn-table.c +0 -3
- data/ext/groonga/rb-grn-utils.c +35 -7
- data/ext/groonga/rb-grn.h +13 -4
- data/ext/groonga/rb-groonga.c +2 -0
- data/rroonga-build.rb +7 -7
- data/test/test-data-column.rb +71 -2
- data/test/test-default-cache.rb +43 -0
- data/test/test-double-array-trie.rb +7 -0
- data/test/test-fix-size-column.rb +12 -0
- data/test/test-hash.rb +7 -0
- data/test/test-index-column.rb +12 -0
- data/test/test-index-cursor.rb +93 -28
- data/test/test-patricia-trie.rb +7 -0
- data/test/test-variable-size-column.rb +19 -0
- metadata +63 -59
@@ -0,0 +1,269 @@
|
|
1
|
+
/* -*- coding: utf-8; mode: C; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
2
|
+
/*
|
3
|
+
Copyright (C) 2017 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
|
+
#define SELF(object) ((RbGrnInvertedIndexCursor *)DATA_PTR(object))
|
22
|
+
|
23
|
+
typedef struct _RbGrnInvertedIndexCursor RbGrnInvertedIndexCursor;
|
24
|
+
struct _RbGrnInvertedIndexCursor
|
25
|
+
{
|
26
|
+
VALUE self;
|
27
|
+
grn_ctx *context;
|
28
|
+
grn_ii_cursor *cursor;
|
29
|
+
grn_id term_id;
|
30
|
+
int flags;
|
31
|
+
};
|
32
|
+
|
33
|
+
static VALUE rb_cGrnInvertedIndexCursor;
|
34
|
+
|
35
|
+
static void
|
36
|
+
rb_grn_inverted_index_cursor_free(void *data)
|
37
|
+
{
|
38
|
+
RbGrnInvertedIndexCursor *rb_grn_cursor = data;
|
39
|
+
|
40
|
+
if (rb_grn_cursor->context && rb_grn_cursor->cursor) {
|
41
|
+
grn_ii_cursor_close(rb_grn_cursor->context,
|
42
|
+
rb_grn_cursor->cursor);
|
43
|
+
}
|
44
|
+
xfree(rb_grn_cursor);
|
45
|
+
}
|
46
|
+
|
47
|
+
static const rb_data_type_t rb_grn_inverted_index_cursor_type = {
|
48
|
+
"Groonga::InvertedIndexCursor",
|
49
|
+
{
|
50
|
+
NULL,
|
51
|
+
rb_grn_inverted_index_cursor_free,
|
52
|
+
NULL,
|
53
|
+
},
|
54
|
+
0,
|
55
|
+
0,
|
56
|
+
RUBY_TYPED_FREE_IMMEDIATELY,
|
57
|
+
};
|
58
|
+
|
59
|
+
VALUE
|
60
|
+
rb_grn_inverted_index_cursor_to_ruby_object (grn_ctx *context,
|
61
|
+
grn_ii_cursor *cursor,
|
62
|
+
grn_id term_id,
|
63
|
+
int flags,
|
64
|
+
VALUE rb_table,
|
65
|
+
VALUE rb_lexicon)
|
66
|
+
{
|
67
|
+
VALUE rb_cursor;
|
68
|
+
RbGrnInvertedIndexCursor *rb_grn_cursor;
|
69
|
+
|
70
|
+
rb_cursor = TypedData_Make_Struct(rb_cGrnInvertedIndexCursor,
|
71
|
+
RbGrnInvertedIndexCursor,
|
72
|
+
&rb_grn_inverted_index_cursor_type,
|
73
|
+
rb_grn_cursor);
|
74
|
+
|
75
|
+
rb_grn_cursor->self = rb_cursor;
|
76
|
+
rb_grn_cursor->context = context;
|
77
|
+
rb_grn_cursor->cursor = cursor;
|
78
|
+
rb_grn_cursor->term_id = term_id;
|
79
|
+
rb_grn_cursor->flags = flags;
|
80
|
+
rb_iv_set(rb_cursor, "@table", rb_table);
|
81
|
+
rb_iv_set(rb_cursor, "@lexicon", rb_lexicon);
|
82
|
+
|
83
|
+
if (rb_grn_cursor->cursor &&
|
84
|
+
(rb_grn_cursor->flags & GRN_OBJ_WITH_POSITION)) {
|
85
|
+
grn_ii_cursor_next(context, cursor);
|
86
|
+
}
|
87
|
+
|
88
|
+
return rb_cursor;
|
89
|
+
}
|
90
|
+
|
91
|
+
static VALUE
|
92
|
+
next_value (VALUE rb_posting,
|
93
|
+
RbGrnInvertedIndexCursor *rb_grn_cursor,
|
94
|
+
VALUE rb_table,
|
95
|
+
VALUE rb_lexicon)
|
96
|
+
{
|
97
|
+
grn_ctx *context = rb_grn_cursor->context;
|
98
|
+
grn_ii_cursor *cursor = rb_grn_cursor->cursor;
|
99
|
+
grn_posting *posting = NULL;
|
100
|
+
|
101
|
+
if (rb_grn_cursor->flags & GRN_OBJ_WITH_POSITION) {
|
102
|
+
posting = grn_ii_cursor_next_pos(context, cursor);
|
103
|
+
while (!posting && grn_ii_cursor_next(context, cursor)) {
|
104
|
+
posting = grn_ii_cursor_next_pos(context, cursor);
|
105
|
+
break;
|
106
|
+
}
|
107
|
+
} else {
|
108
|
+
posting = grn_ii_cursor_next(context, cursor);
|
109
|
+
}
|
110
|
+
if (!posting) {
|
111
|
+
return Qnil;
|
112
|
+
}
|
113
|
+
|
114
|
+
if (NIL_P(rb_posting)) {
|
115
|
+
return rb_grn_posting_new(posting,
|
116
|
+
rb_grn_cursor->term_id,
|
117
|
+
rb_table,
|
118
|
+
rb_lexicon);
|
119
|
+
} else {
|
120
|
+
rb_grn_posting_update(rb_posting,
|
121
|
+
posting,
|
122
|
+
rb_grn_cursor->term_id);
|
123
|
+
return rb_posting;
|
124
|
+
}
|
125
|
+
}
|
126
|
+
|
127
|
+
static VALUE
|
128
|
+
rb_grn_inverted_index_cursor_next (VALUE self)
|
129
|
+
{
|
130
|
+
RbGrnInvertedIndexCursor *rb_grn_cursor;
|
131
|
+
VALUE rb_table;
|
132
|
+
VALUE rb_lexicon;
|
133
|
+
VALUE rb_posting;
|
134
|
+
|
135
|
+
TypedData_Get_Struct(self,
|
136
|
+
RbGrnInvertedIndexCursor,
|
137
|
+
&rb_grn_inverted_index_cursor_type,
|
138
|
+
rb_grn_cursor);
|
139
|
+
if (!rb_grn_cursor->context) {
|
140
|
+
rb_raise(rb_eGrnClosed,
|
141
|
+
"can't access already closed Groonga object: %" PRIsVALUE,
|
142
|
+
self);
|
143
|
+
}
|
144
|
+
|
145
|
+
if (!rb_grn_cursor->cursor) {
|
146
|
+
return Qnil;
|
147
|
+
}
|
148
|
+
|
149
|
+
rb_table = rb_iv_get(self, "@table");
|
150
|
+
rb_lexicon = rb_iv_get(self, "@lexicon");
|
151
|
+
rb_posting = next_value(Qnil, rb_grn_cursor, rb_table, rb_lexicon);
|
152
|
+
|
153
|
+
return rb_posting;
|
154
|
+
|
155
|
+
}
|
156
|
+
|
157
|
+
static VALUE
|
158
|
+
rb_grn_inverted_index_cursor_each (int argc, VALUE *argv, VALUE self)
|
159
|
+
{
|
160
|
+
RbGrnInvertedIndexCursor *rb_grn_cursor;
|
161
|
+
grn_bool reuse_posting_object;
|
162
|
+
VALUE rb_options;
|
163
|
+
VALUE rb_reuse_posting_object;
|
164
|
+
VALUE rb_table;
|
165
|
+
VALUE rb_lexicon;
|
166
|
+
VALUE rb_posting = Qnil;
|
167
|
+
|
168
|
+
RETURN_ENUMERATOR(self, argc, argv);
|
169
|
+
|
170
|
+
rb_scan_args(argc, argv, "01", &rb_options);
|
171
|
+
|
172
|
+
rb_grn_scan_options(rb_options,
|
173
|
+
"reuse_posting_object", &rb_reuse_posting_object,
|
174
|
+
NULL);
|
175
|
+
|
176
|
+
TypedData_Get_Struct(self,
|
177
|
+
RbGrnInvertedIndexCursor,
|
178
|
+
&rb_grn_inverted_index_cursor_type,
|
179
|
+
rb_grn_cursor);
|
180
|
+
if (!rb_grn_cursor->context) {
|
181
|
+
rb_raise(rb_eGrnClosed,
|
182
|
+
"can't access already closed Groonga object: %" PRIsVALUE,
|
183
|
+
self);
|
184
|
+
}
|
185
|
+
|
186
|
+
if (!rb_grn_cursor->cursor) {
|
187
|
+
return Qnil;
|
188
|
+
}
|
189
|
+
|
190
|
+
rb_table = rb_iv_get(self, "@table");
|
191
|
+
rb_lexicon = rb_iv_get(self, "@lexicon");
|
192
|
+
reuse_posting_object = RVAL2CBOOL(rb_reuse_posting_object);
|
193
|
+
|
194
|
+
if (reuse_posting_object) {
|
195
|
+
rb_posting = rb_grn_posting_new(NULL, GRN_ID_NIL, rb_table, rb_lexicon);
|
196
|
+
}
|
197
|
+
while (GRN_TRUE) {
|
198
|
+
if (!reuse_posting_object) {
|
199
|
+
rb_posting = Qnil;
|
200
|
+
}
|
201
|
+
rb_posting = next_value(rb_posting, rb_grn_cursor, rb_table, rb_lexicon);
|
202
|
+
if (NIL_P(rb_posting)) {
|
203
|
+
break;
|
204
|
+
}
|
205
|
+
rb_yield(rb_posting);
|
206
|
+
}
|
207
|
+
|
208
|
+
return Qnil;
|
209
|
+
}
|
210
|
+
|
211
|
+
static VALUE
|
212
|
+
rb_grn_inverted_index_cursor_close (VALUE self)
|
213
|
+
{
|
214
|
+
RbGrnInvertedIndexCursor *rb_grn_cursor;
|
215
|
+
|
216
|
+
TypedData_Get_Struct(self,
|
217
|
+
RbGrnInvertedIndexCursor,
|
218
|
+
&rb_grn_inverted_index_cursor_type,
|
219
|
+
rb_grn_cursor);
|
220
|
+
if (!rb_grn_cursor->context) {
|
221
|
+
rb_raise(rb_eGrnClosed,
|
222
|
+
"can't access already closed Groonga object: %" PRIsVALUE,
|
223
|
+
self);
|
224
|
+
}
|
225
|
+
|
226
|
+
if (rb_grn_cursor->cursor) {
|
227
|
+
grn_ii_cursor_close(rb_grn_cursor->context,
|
228
|
+
rb_grn_cursor->cursor);
|
229
|
+
}
|
230
|
+
rb_grn_cursor->context = NULL;
|
231
|
+
rb_grn_cursor->cursor = NULL;
|
232
|
+
|
233
|
+
return Qnil;
|
234
|
+
|
235
|
+
}
|
236
|
+
|
237
|
+
static VALUE
|
238
|
+
rb_grn_inverted_index_cursor_is_closed (VALUE self)
|
239
|
+
{
|
240
|
+
RbGrnInvertedIndexCursor *rb_grn_cursor;
|
241
|
+
|
242
|
+
TypedData_Get_Struct(self,
|
243
|
+
RbGrnInvertedIndexCursor,
|
244
|
+
&rb_grn_inverted_index_cursor_type,
|
245
|
+
rb_grn_cursor);
|
246
|
+
if (rb_grn_cursor->context) {
|
247
|
+
return Qfalse;
|
248
|
+
} else {
|
249
|
+
return Qtrue;
|
250
|
+
}
|
251
|
+
|
252
|
+
}
|
253
|
+
|
254
|
+
void
|
255
|
+
rb_grn_init_inverted_index_cursor (VALUE mGrn)
|
256
|
+
{
|
257
|
+
rb_cGrnInvertedIndexCursor =
|
258
|
+
rb_define_class_under(mGrn, "InvertedIndexCursor", rb_cData);
|
259
|
+
rb_include_module(rb_cGrnInvertedIndexCursor, rb_mEnumerable);
|
260
|
+
|
261
|
+
rb_define_method(rb_cGrnInvertedIndexCursor, "next",
|
262
|
+
rb_grn_inverted_index_cursor_next, 0);
|
263
|
+
rb_define_method(rb_cGrnInvertedIndexCursor, "each",
|
264
|
+
rb_grn_inverted_index_cursor_each, -1);
|
265
|
+
rb_define_method(rb_cGrnInvertedIndexCursor, "close",
|
266
|
+
rb_grn_inverted_index_cursor_close, 0);
|
267
|
+
rb_define_method(rb_cGrnInvertedIndexCursor, "closed?",
|
268
|
+
rb_grn_inverted_index_cursor_is_closed, 0);
|
269
|
+
}
|
data/ext/groonga/rb-grn-object.c
CHANGED
@@ -1973,7 +1973,7 @@ rb_grn_object_dirty_p (VALUE self)
|
|
1973
1973
|
void
|
1974
1974
|
rb_grn_init_object (VALUE mGrn)
|
1975
1975
|
{
|
1976
|
-
rb_cGrnObject = rb_define_class_under(mGrn, "Object",
|
1976
|
+
rb_cGrnObject = rb_define_class_under(mGrn, "Object", rb_cData);
|
1977
1977
|
rb_define_alloc_func(rb_cGrnObject, rb_grn_object_alloc);
|
1978
1978
|
|
1979
1979
|
rb_define_attr(rb_cGrnObject, "context", GRN_TRUE, GRN_FALSE);
|
data/ext/groonga/rb-grn-plugin.c
CHANGED
@@ -245,7 +245,7 @@ rb_grn_plugin_s_names (int argc, VALUE *argv, VALUE klass)
|
|
245
245
|
void
|
246
246
|
rb_grn_init_plugin (VALUE mGrn)
|
247
247
|
{
|
248
|
-
cGrnPlugin = rb_define_class_under(mGrn, "Plugin",
|
248
|
+
cGrnPlugin = rb_define_class_under(mGrn, "Plugin", rb_cData);
|
249
249
|
rb_define_alloc_func(cGrnPlugin, rb_grn_plugin_alloc);
|
250
250
|
|
251
251
|
rb_define_singleton_method(cGrnPlugin, "register",
|
@@ -277,7 +277,7 @@ rb_grn_table_cursor_each (VALUE self)
|
|
277
277
|
void
|
278
278
|
rb_grn_init_table_cursor (VALUE mGrn)
|
279
279
|
{
|
280
|
-
rb_cGrnTableCursor = rb_define_class_under(mGrn, "TableCursor",
|
280
|
+
rb_cGrnTableCursor = rb_define_class_under(mGrn, "TableCursor", rb_cData);
|
281
281
|
rb_define_alloc_func(rb_cGrnTableCursor, rb_grn_object_alloc);
|
282
282
|
|
283
283
|
rb_include_module(rb_cGrnTableCursor, rb_mEnumerable);
|
@@ -356,7 +356,11 @@ rb_grn_table_key_support_get_key (VALUE self, VALUE rb_id)
|
|
356
356
|
/*
|
357
357
|
* テーブルに主キーが _key_ のレコードがあるならtrueを返す。
|
358
358
|
*
|
359
|
+
* @overload key?(key)
|
360
|
+
* @since 7.0.0
|
361
|
+
*
|
359
362
|
* @overload has_key?(key)
|
363
|
+
* @deprecated Use {key?} instead.
|
360
364
|
*/
|
361
365
|
static VALUE
|
362
366
|
rb_grn_table_key_support_has_key (VALUE self, VALUE rb_key)
|
@@ -1123,6 +1127,8 @@ rb_grn_init_table_key_support (VALUE mGrn)
|
|
1123
1127
|
rb_grn_table_key_support_get_id, -1);
|
1124
1128
|
rb_define_method(rb_mGrnTableKeySupport, "key",
|
1125
1129
|
rb_grn_table_key_support_get_key, 1);
|
1130
|
+
rb_define_method(rb_mGrnTableKeySupport, "key?",
|
1131
|
+
rb_grn_table_key_support_has_key, 1);
|
1126
1132
|
rb_define_method(rb_mGrnTableKeySupport, "has_key?",
|
1127
1133
|
rb_grn_table_key_support_has_key, 1);
|
1128
1134
|
|
data/ext/groonga/rb-grn-table.c
CHANGED
@@ -1377,9 +1377,6 @@ rb_grn_table_geo_sort (int argc, VALUE *argv, VALUE self)
|
|
1377
1377
|
offset = NUM2INT(rb_offset);
|
1378
1378
|
if (!NIL_P(rb_limit))
|
1379
1379
|
limit = NUM2INT(rb_limit);
|
1380
|
-
/* TODO: Remove me when Groonga 5.1.0 is released. */
|
1381
|
-
if (limit < 0)
|
1382
|
-
limit = grn_table_size(context, table) + limit + 1;
|
1383
1380
|
|
1384
1381
|
result = grn_table_create(context, NULL, 0, NULL, GRN_TABLE_NO_KEY,
|
1385
1382
|
NULL, table);
|
data/ext/groonga/rb-grn-utils.c
CHANGED
@@ -1061,13 +1061,37 @@ rb_grn_value_to_ruby_object (grn_ctx *context,
|
|
1061
1061
|
|
1062
1062
|
grn_id
|
1063
1063
|
rb_grn_id_from_ruby_object (VALUE object, grn_ctx *context, grn_obj *table,
|
1064
|
-
VALUE
|
1064
|
+
VALUE rb_related_object)
|
1065
1065
|
{
|
1066
1066
|
VALUE rb_id;
|
1067
1067
|
|
1068
1068
|
if (NIL_P(object))
|
1069
1069
|
return Qnil;
|
1070
1070
|
|
1071
|
+
if (!RVAL2CBOOL(rb_obj_is_kind_of(object, rb_cGrnRecord)) &&
|
1072
|
+
!RVAL2CBOOL(rb_obj_is_kind_of(object, rb_cInteger))) {
|
1073
|
+
VALUE rb_record;
|
1074
|
+
if (table) {
|
1075
|
+
VALUE rb_table;
|
1076
|
+
rb_table = GRNOBJECT2RVAL(Qnil, context, table, GRN_FALSE);
|
1077
|
+
if (!NIL_P(rb_table) &&
|
1078
|
+
RVAL2CBOOL(rb_obj_is_kind_of(rb_table,
|
1079
|
+
rb_mGrnTableKeySupport))) {
|
1080
|
+
rb_record = rb_funcall(rb_table, rb_intern("[]"), 1, object);
|
1081
|
+
if (NIL_P(rb_record)) {
|
1082
|
+
rb_raise(rb_eArgError,
|
1083
|
+
"nonexistent key: %" PRIsVALUE
|
1084
|
+
": %" PRIsVALUE
|
1085
|
+
": %" PRIsVALUE,
|
1086
|
+
object,
|
1087
|
+
rb_table,
|
1088
|
+
rb_related_object);
|
1089
|
+
}
|
1090
|
+
object = rb_record;
|
1091
|
+
}
|
1092
|
+
}
|
1093
|
+
}
|
1094
|
+
|
1071
1095
|
if (RVAL2CBOOL(rb_obj_is_kind_of(object, rb_cGrnRecord))) {
|
1072
1096
|
VALUE rb_table;
|
1073
1097
|
rb_table = rb_funcall(object, rb_intern("table"), 0);
|
@@ -1077,9 +1101,12 @@ rb_grn_id_from_ruby_object (VALUE object, grn_ctx *context, grn_obj *table,
|
|
1077
1101
|
rb_expected_table =
|
1078
1102
|
GRNOBJECT2RVAL(Qnil, context, table, GRN_FALSE);
|
1079
1103
|
rb_raise(rb_eGrnError,
|
1080
|
-
"wrong table: expected
|
1081
|
-
|
1082
|
-
|
1104
|
+
"wrong table: expected %" PRIsVALUE
|
1105
|
+
": actual %" PRIsVALUE
|
1106
|
+
": %" PRIsVALUE,
|
1107
|
+
rb_expected_table,
|
1108
|
+
rb_table,
|
1109
|
+
rb_related_object);
|
1083
1110
|
}
|
1084
1111
|
rb_id = rb_funcall(object, rb_intern("id"), 0);
|
1085
1112
|
} else {
|
@@ -1088,9 +1115,10 @@ rb_grn_id_from_ruby_object (VALUE object, grn_ctx *context, grn_obj *table,
|
|
1088
1115
|
|
1089
1116
|
if (!RVAL2CBOOL(rb_obj_is_kind_of(rb_id, rb_cInteger)))
|
1090
1117
|
rb_raise(rb_eGrnError,
|
1091
|
-
"should be unsigned integer or Groogna::Record:
|
1092
|
-
|
1093
|
-
|
1118
|
+
"should be unsigned integer or Groogna::Record: %" PRIsVALUE
|
1119
|
+
": %" PRIsVALUE,
|
1120
|
+
object,
|
1121
|
+
rb_related_object);
|
1094
1122
|
|
1095
1123
|
return NUM2UINT(rb_id);
|
1096
1124
|
}
|
data/ext/groonga/rb-grn.h
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-2017 Kouhei Sutou <kou@clear-code.com>
|
4
4
|
Copyright (C) 2015-2017 Masafumi Yokoyama <yokoyama@clear-code.com>
|
5
5
|
|
6
6
|
This library is free software; you can redistribute it and/or
|
@@ -97,9 +97,9 @@ RB_GRN_BEGIN_DECLS
|
|
97
97
|
# define debug(...)
|
98
98
|
#endif
|
99
99
|
|
100
|
-
#define RB_GRN_MAJOR_VERSION
|
101
|
-
#define RB_GRN_MINOR_VERSION
|
102
|
-
#define RB_GRN_MICRO_VERSION
|
100
|
+
#define RB_GRN_MAJOR_VERSION 7
|
101
|
+
#define RB_GRN_MINOR_VERSION 0
|
102
|
+
#define RB_GRN_MICRO_VERSION 2
|
103
103
|
|
104
104
|
#define RB_GRN_OBJECT(object) ((RbGrnObject *)(object))
|
105
105
|
#define RB_GRN_NAMED_OBJECT(object) ((RbGrnNamedObject *)(object))
|
@@ -336,6 +336,7 @@ void rb_grn_init_fix_size_column (VALUE mGrn);
|
|
336
336
|
void rb_grn_init_variable_size_column (VALUE mGrn);
|
337
337
|
void rb_grn_init_index_column (VALUE mGrn);
|
338
338
|
void rb_grn_init_index_cursor (VALUE mGrn);
|
339
|
+
void rb_grn_init_inverted_index_cursor (VALUE mGrn);
|
339
340
|
void rb_grn_init_posting (VALUE mGrn);
|
340
341
|
void rb_grn_init_accessor (VALUE mGrn);
|
341
342
|
void rb_grn_init_geo_point (VALUE mGrn);
|
@@ -367,6 +368,7 @@ void rb_grn_init_request_timer (VALUE mGrn);
|
|
367
368
|
void rb_grn_init_request_timer_id (VALUE mGrn);
|
368
369
|
void rb_grn_init_id (VALUE mGrn);
|
369
370
|
void rb_grn_init_name (VALUE mGrn);
|
371
|
+
void rb_grn_init_default_cache (VALUE mGrn);
|
370
372
|
|
371
373
|
VALUE rb_grn_rc_to_exception (grn_rc rc);
|
372
374
|
void rb_grn_rc_check (grn_rc rc,
|
@@ -825,6 +827,13 @@ VALUE rb_grn_index_cursor_to_ruby_object (grn_ctx *context,
|
|
825
827
|
VALUE rb_table,
|
826
828
|
VALUE rb_lexicon,
|
827
829
|
grn_bool owner);
|
830
|
+
VALUE rb_grn_inverted_index_cursor_to_ruby_object
|
831
|
+
(grn_ctx *context,
|
832
|
+
grn_ii_cursor *cursor,
|
833
|
+
grn_id term_id,
|
834
|
+
int flags,
|
835
|
+
VALUE rb_table,
|
836
|
+
VALUE rb_lexicon);
|
828
837
|
|
829
838
|
grn_operator rb_grn_operator_from_ruby_object (VALUE object);
|
830
839
|
grn_operator rb_grn_set_operator_from_ruby_object (VALUE object);
|
data/ext/groonga/rb-groonga.c
CHANGED
@@ -229,6 +229,7 @@ Init_groonga (void)
|
|
229
229
|
rb_grn_init_table(mGrn);
|
230
230
|
rb_grn_init_table_cursor(mGrn);
|
231
231
|
rb_grn_init_index_cursor(mGrn);
|
232
|
+
rb_grn_init_inverted_index_cursor(mGrn);
|
232
233
|
rb_grn_init_posting(mGrn);
|
233
234
|
rb_grn_init_type(mGrn);
|
234
235
|
rb_grn_init_procedure(mGrn);
|
@@ -255,4 +256,5 @@ Init_groonga (void)
|
|
255
256
|
rb_grn_init_request_timer_id(mGrn);
|
256
257
|
rb_grn_init_id(mGrn);
|
257
258
|
rb_grn_init_name(mGrn);
|
259
|
+
rb_grn_init_default_cache(mGrn);
|
258
260
|
}
|