rroonga 1.3.1 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +1 -1
- data/Rakefile +2 -7
- data/bug.rb +36 -0
- data/crash.rb +17 -0
- data/ext/groonga/Makefile +260 -0
- data/ext/groonga/groonga.so +0 -0
- data/ext/groonga/rb-grn-accessor.o +0 -0
- data/ext/groonga/rb-grn-array-cursor.o +0 -0
- data/ext/groonga/rb-grn-array.o +0 -0
- data/ext/groonga/rb-grn-column.c +34 -37
- data/ext/groonga/rb-grn-column.o +0 -0
- data/ext/groonga/rb-grn-context.c +63 -2
- data/ext/groonga/rb-grn-context.o +0 -0
- data/ext/groonga/rb-grn-database.o +0 -0
- data/ext/groonga/rb-grn-double-array-trie-cursor.o +0 -0
- data/ext/groonga/rb-grn-double-array-trie.o +0 -0
- data/ext/groonga/rb-grn-encoding-support.o +0 -0
- data/ext/groonga/rb-grn-encoding.o +0 -0
- data/ext/groonga/rb-grn-exception.o +0 -0
- data/ext/groonga/rb-grn-expression-builder.o +0 -0
- data/ext/groonga/rb-grn-expression.c +21 -13
- data/ext/groonga/rb-grn-expression.o +0 -0
- data/ext/groonga/rb-grn-fix-size-column.o +0 -0
- data/ext/groonga/rb-grn-hash-cursor.o +0 -0
- data/ext/groonga/rb-grn-hash.o +0 -0
- data/ext/groonga/rb-grn-index-column.o +0 -0
- data/ext/groonga/rb-grn-index-cursor.o +0 -0
- data/ext/groonga/rb-grn-logger.o +0 -0
- data/ext/groonga/rb-grn-object.c +2 -0
- data/ext/groonga/rb-grn-object.o +0 -0
- data/ext/groonga/rb-grn-operator.o +0 -0
- data/ext/groonga/rb-grn-patricia-trie-cursor.o +0 -0
- data/ext/groonga/rb-grn-patricia-trie.o +0 -0
- data/ext/groonga/rb-grn-plugin.o +0 -0
- data/ext/groonga/rb-grn-posting.o +0 -0
- data/ext/groonga/rb-grn-procedure.o +0 -0
- data/ext/groonga/rb-grn-record.o +0 -0
- data/ext/groonga/rb-grn-snippet.o +0 -0
- data/ext/groonga/rb-grn-table-cursor-key-support.o +0 -0
- data/ext/groonga/rb-grn-table-cursor.o +0 -0
- data/ext/groonga/rb-grn-table-key-support.o +0 -0
- data/ext/groonga/rb-grn-table.c +57 -51
- data/ext/groonga/rb-grn-table.o +0 -0
- data/ext/groonga/rb-grn-type.o +0 -0
- data/ext/groonga/rb-grn-utils.o +0 -0
- data/ext/groonga/rb-grn-variable-size-column.o +0 -0
- data/ext/groonga/rb-grn-variable.o +0 -0
- data/ext/groonga/rb-grn-view-accessor.o +0 -0
- data/ext/groonga/rb-grn-view-cursor.o +0 -0
- data/ext/groonga/rb-grn-view-record.o +0 -0
- data/ext/groonga/rb-grn-view.o +0 -0
- data/ext/groonga/rb-grn.h +10 -4
- data/ext/groonga/rb-groonga.o +0 -0
- data/lib/groonga.rb +9 -6
- data/lib/groonga/schema.rb +75 -46
- data/rroonga-build.rb +2 -2
- data/test/run-test.rb +1 -2
- data/test/test-table-select.rb +0 -5
- data/test/test-type.rb +2 -2
- data/test/test-version.rb +40 -10
- metadata +198 -191
Binary file
|
@@ -1,6 +1,6 @@
|
|
1
1
|
/* -*- coding: utf-8; c-file-style: "ruby" -*- */
|
2
2
|
/*
|
3
|
-
Copyright (C) 2010-
|
3
|
+
Copyright (C) 2010-2012 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
|
@@ -59,6 +59,61 @@ rb_grn_context_from_ruby_object (VALUE object)
|
|
59
59
|
return rb_grn_context->context;
|
60
60
|
}
|
61
61
|
|
62
|
+
void
|
63
|
+
rb_grn_context_register_floating_object (RbGrnObject *rb_grn_object)
|
64
|
+
{
|
65
|
+
RbGrnContext *rb_grn_context;
|
66
|
+
grn_ctx *context;
|
67
|
+
grn_hash *floating_objects;
|
68
|
+
|
69
|
+
Data_Get_Struct(rb_grn_object->rb_context, RbGrnContext, rb_grn_context);
|
70
|
+
context = rb_grn_context->context;
|
71
|
+
floating_objects = rb_grn_context->floating_objects;
|
72
|
+
grn_hash_add(context, floating_objects,
|
73
|
+
(const void *)(&rb_grn_object), sizeof(RbGrnObject *),
|
74
|
+
NULL, NULL);
|
75
|
+
rb_grn_object->floating = GRN_TRUE;
|
76
|
+
}
|
77
|
+
|
78
|
+
void
|
79
|
+
rb_grn_context_unregister_floating_object (RbGrnObject *rb_grn_object)
|
80
|
+
{
|
81
|
+
RbGrnContext *rb_grn_context;
|
82
|
+
grn_ctx *context;
|
83
|
+
grn_hash *floating_objects;
|
84
|
+
|
85
|
+
if (!rb_grn_object->floating)
|
86
|
+
return;
|
87
|
+
|
88
|
+
Data_Get_Struct(rb_grn_object->rb_context, RbGrnContext, rb_grn_context);
|
89
|
+
context = rb_grn_context->context;
|
90
|
+
floating_objects = rb_grn_context->floating_objects;
|
91
|
+
grn_hash_delete(context, floating_objects,
|
92
|
+
(const void *)&rb_grn_object, sizeof(RbGrnObject *),
|
93
|
+
NULL);
|
94
|
+
rb_grn_object->floating = GRN_FALSE;
|
95
|
+
}
|
96
|
+
|
97
|
+
static void
|
98
|
+
rb_grn_context_close_floating_objects (RbGrnContext *rb_grn_context)
|
99
|
+
{
|
100
|
+
grn_ctx *context;
|
101
|
+
grn_hash *floating_objects;
|
102
|
+
RbGrnObject **floating_object = NULL;
|
103
|
+
|
104
|
+
context = rb_grn_context->context;
|
105
|
+
floating_objects = rb_grn_context->floating_objects;
|
106
|
+
if (!floating_objects)
|
107
|
+
return;
|
108
|
+
|
109
|
+
rb_grn_context->floating_objects = NULL;
|
110
|
+
GRN_HASH_EACH(context, floating_objects, id, &floating_object, NULL, NULL, {
|
111
|
+
(*floating_object)->floating = GRN_FALSE;
|
112
|
+
grn_obj_close(context, RB_GRN_OBJECT(*floating_object)->object);
|
113
|
+
});
|
114
|
+
grn_hash_close(context, floating_objects);
|
115
|
+
}
|
116
|
+
|
62
117
|
static void
|
63
118
|
rb_grn_context_unlink_database (grn_ctx *context)
|
64
119
|
{
|
@@ -73,7 +128,7 @@ rb_grn_context_unlink_database (grn_ctx *context)
|
|
73
128
|
debug("context:database: %p:%p: done\n", context, database);
|
74
129
|
}
|
75
130
|
|
76
|
-
void
|
131
|
+
static void
|
77
132
|
rb_grn_context_fin (grn_ctx *context)
|
78
133
|
{
|
79
134
|
if (context->stat == GRN_CTX_FIN)
|
@@ -93,6 +148,7 @@ rb_grn_context_free (void *pointer)
|
|
93
148
|
|
94
149
|
context = rb_grn_context->context;
|
95
150
|
debug("context-free: %p\n", context);
|
151
|
+
rb_grn_context_close_floating_objects(rb_grn_context);
|
96
152
|
if (context && !rb_grn_exited)
|
97
153
|
rb_grn_context_fin(context);
|
98
154
|
debug("context-free: %p: done\n", context);
|
@@ -116,6 +172,7 @@ rb_grn_context_finalizer (grn_ctx *context, int n_args, grn_obj **grn_objects,
|
|
116
172
|
|
117
173
|
rb_grn_context = user_data->ptr;
|
118
174
|
|
175
|
+
rb_grn_context_close_floating_objects(rb_grn_context);
|
119
176
|
if (!(context->flags & GRN_CTX_PER_DB)) {
|
120
177
|
rb_grn_context_unlink_database(context);
|
121
178
|
}
|
@@ -364,6 +421,10 @@ rb_grn_context_initialize (int argc, VALUE *argv, VALUE self)
|
|
364
421
|
rb_grn_context_check(context, self);
|
365
422
|
|
366
423
|
GRN_CTX_USER_DATA(context)->ptr = rb_grn_context;
|
424
|
+
rb_grn_context->floating_objects = grn_hash_create(context, NULL,
|
425
|
+
sizeof(RbGrnObject *),
|
426
|
+
0,
|
427
|
+
GRN_OBJ_TABLE_HASH_KEY);
|
367
428
|
grn_ctx_set_finalizer(context, rb_grn_context_finalizer);
|
368
429
|
|
369
430
|
if (!NIL_P(rb_encoding)) {
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -1,6 +1,6 @@
|
|
1
1
|
/* -*- coding: utf-8; c-file-style: "ruby" -*- */
|
2
2
|
/*
|
3
|
-
Copyright (C) 2009-
|
3
|
+
Copyright (C) 2009-2012 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
|
@@ -36,6 +36,8 @@ rb_grn_expression_finalizer (grn_ctx *context, grn_obj *object,
|
|
36
36
|
if (context && rb_grn_expression->value)
|
37
37
|
grn_obj_unlink(context, rb_grn_expression->value);
|
38
38
|
|
39
|
+
rb_grn_context_unregister_floating_object(RB_GRN_OBJECT(rb_grn_expression));
|
40
|
+
|
39
41
|
rb_grn_expression->value = NULL;
|
40
42
|
}
|
41
43
|
|
@@ -95,8 +97,9 @@ rb_grn_expression_initialize (int argc, VALUE *argv, VALUE self)
|
|
95
97
|
}
|
96
98
|
|
97
99
|
expression = grn_expr_create(context, name, name_size);
|
98
|
-
rb_grn_object_assign(Qnil, self, rb_context, context, expression);
|
99
100
|
rb_grn_context_check(context, self);
|
101
|
+
rb_grn_object_assign(Qnil, self, rb_context, context, expression);
|
102
|
+
rb_grn_context_register_floating_object(DATA_PTR(self));
|
100
103
|
|
101
104
|
rb_iv_set(self, "@objects", rb_ary_new());
|
102
105
|
|
@@ -581,23 +584,28 @@ rb_grn_expression_inspect (VALUE self)
|
|
581
584
|
* _expression_ からGroonga::Snippetを生成する。 _tags_ には
|
582
585
|
* キーワードの前後に挿入するタグの配列を以下のような形式で指定
|
583
586
|
* する。
|
587
|
+
*
|
584
588
|
* <pre>
|
585
|
-
*
|
586
|
-
*
|
587
|
-
*
|
588
|
-
*
|
589
|
-
*
|
589
|
+
* !!!ruby
|
590
|
+
* [
|
591
|
+
* ["キーワード前に挿入する文字列1", "キーワード後に挿入する文字列1"],
|
592
|
+
* ["キーワード前に挿入する文字列2", "キーワード後に挿入する文字列2"],
|
593
|
+
* # ...,
|
594
|
+
* ]
|
590
595
|
* </pre>
|
596
|
+
*
|
591
597
|
* もし、1つのスニペットの中に _tags_ で指定したタグより多くの
|
592
598
|
* キーワードが含まれている場合は、以下のように、また、先頭
|
593
599
|
* のタグから順番に使われる。
|
600
|
+
*
|
594
601
|
* <pre>
|
595
|
-
*
|
596
|
-
*
|
597
|
-
*
|
598
|
-
*
|
599
|
-
*
|
600
|
-
*
|
602
|
+
* !!!ruby
|
603
|
+
* expression.parse("Ruby groonga 検索")
|
604
|
+
* tags = [["<tag1>", "</tag1>"], ["<tag2>", "</tag2>"]]
|
605
|
+
* snippet = expression.snippet(tags)
|
606
|
+
* p snippet.execute("Rubyでgroonga使って全文検索、高速検索。")
|
607
|
+
* # => ["<tag1>Ruby</tag1>で<tag2>groonga</tag2>"
|
608
|
+
* # => "使って全文<tag1>検索</tag1>、高速<tag2>検索</tag2>。"]
|
601
609
|
* </pre>
|
602
610
|
*
|
603
611
|
* _options_ に指定可能な値は以下の通り。
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/ext/groonga/rb-grn-object.c
CHANGED
@@ -320,11 +320,13 @@ rb_grn_object_bind_common (VALUE klass, VALUE self, VALUE rb_context,
|
|
320
320
|
{
|
321
321
|
grn_user_data *user_data;
|
322
322
|
|
323
|
+
rb_grn_object->rb_context = rb_context;
|
323
324
|
rb_grn_object->context = context;
|
324
325
|
rb_grn_object->object = object;
|
325
326
|
rb_grn_object->self = self;
|
326
327
|
rb_grn_object->need_close = GRN_TRUE;
|
327
328
|
rb_grn_object->have_finalizer = GRN_FALSE;
|
329
|
+
rb_grn_object->floating = GRN_FALSE;
|
328
330
|
|
329
331
|
user_data = grn_obj_user_data(context, object);
|
330
332
|
if (user_data) {
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/ext/groonga/rb-grn-table.c
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
/* -*- coding: utf-8; c-file-style: "ruby" -*- */
|
2
2
|
/*
|
3
|
-
Copyright (C) 2009-
|
3
|
+
Copyright (C) 2009-2012 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
|
@@ -991,11 +991,12 @@ rb_grn_table_delete (VALUE self, VALUE rb_id)
|
|
991
991
|
* - ハッシュの配列で指定する方法 :=
|
992
992
|
* オーソドックスな指定方法。
|
993
993
|
*
|
994
|
-
* <pre
|
994
|
+
* <pre>
|
995
|
+
* !!!ruby
|
995
996
|
* [
|
996
997
|
* {:key => "第1ソートキー", :order => order},
|
997
998
|
* {:key => "第2ソートキー", :order => order},
|
998
|
-
* ...,
|
999
|
+
* # ...,
|
999
1000
|
* ]
|
1000
1001
|
* </pre>
|
1001
1002
|
* =:
|
@@ -1003,11 +1004,12 @@ rb_grn_table_delete (VALUE self, VALUE rb_id)
|
|
1003
1004
|
* - 配列の配列で指定する方法 :=
|
1004
1005
|
* 少し簡単化した指定方法。
|
1005
1006
|
*
|
1006
|
-
* <pre
|
1007
|
+
* <pre>
|
1008
|
+
* !!!ruby
|
1007
1009
|
* [
|
1008
1010
|
* ["第1ソートキー", order],
|
1009
1011
|
* ["第2ソートキー", order],
|
1010
|
-
* ...,
|
1012
|
+
* # ...,
|
1011
1013
|
* ]
|
1012
1014
|
* </pre>
|
1013
1015
|
* =:
|
@@ -1016,8 +1018,9 @@ rb_grn_table_delete (VALUE self, VALUE rb_id)
|
|
1016
1018
|
* _order_ は常に昇順( +:ascending+ )になるが、最も簡単
|
1017
1019
|
* に指定できる。
|
1018
1020
|
*
|
1019
|
-
* <pre
|
1020
|
-
*
|
1021
|
+
* <pre>
|
1022
|
+
* !!!ruby
|
1023
|
+
* ["第1ソートキー", "第2ソートキー", "..."]
|
1021
1024
|
* </pre>
|
1022
1025
|
* =:
|
1023
1026
|
*
|
@@ -1713,50 +1716,51 @@ rb_grn_table_is_locked (int argc, VALUE *argv, VALUE self)
|
|
1713
1716
|
* Groonga::Expressionを取得できる。
|
1714
1717
|
* Groonga::Expression#snippetを使うことにより、指定した条件
|
1715
1718
|
* 用のスニペットを簡単に生成できる。
|
1719
|
+
*
|
1716
1720
|
* <pre>
|
1717
|
-
*
|
1718
|
-
*
|
1721
|
+
* !!!ruby
|
1722
|
+
* results = table.select do |record|
|
1723
|
+
* record["description"] =~ "groonga"
|
1724
|
+
* end
|
1725
|
+
* snippet = results.expression.snippet([["<em>", "</em>"]])
|
1726
|
+
* results.each do |record|
|
1727
|
+
* puts "#{record['name']}の説明文の中で「groonga」が含まれる部分"
|
1728
|
+
* snippet.execute(record["description"]).each do |snippet|
|
1729
|
+
* puts "---"
|
1730
|
+
* puts "#{snippet}..."
|
1731
|
+
* puts "---"
|
1719
1732
|
* end
|
1720
|
-
*
|
1721
|
-
* results.each do |record|
|
1722
|
-
* puts "#{record['name']}の説明文の中で「groonga」が含まれる部分"
|
1723
|
-
* snippet.execute(record["description"].each do |snippet|
|
1724
|
-
* puts "---"
|
1725
|
-
* puts "#{snippet}..."
|
1726
|
-
* puts "---"
|
1727
|
-
* end
|
1728
|
-
* end==
|
1733
|
+
* end
|
1729
1734
|
* </pre>
|
1735
|
+
*
|
1730
1736
|
* 出力例
|
1731
|
-
* Ruby/groongaの説明文の中で「groonga」が含まれる部分
|
1732
|
-
* ---
|
1733
|
-
* Ruby/<em>groonga</em>は<em>groonga</em>のいわゆるDB-APIの層の...
|
1734
|
-
* ---
|
1735
1737
|
*
|
1736
|
-
* _query_ には「[カラム名]:[演算子][値]」という書式で条件を
|
1737
|
-
* 指定する。演算子は以下の通り。
|
1738
1738
|
* <pre>
|
1739
|
-
*
|
1740
|
-
*
|
1741
|
-
*
|
1742
|
-
*
|
1743
|
-
*
|
1744
|
-
* \[カラム値] < [値]
|
1745
|
-
* [<tt>></tt>]
|
1746
|
-
* \[カラム値] > [値]
|
1747
|
-
* [<tt><=</tt>]
|
1748
|
-
* \[カラム値] <= [値]
|
1749
|
-
* [<tt>>=</tt>]
|
1750
|
-
* \[カラム値] >= [値]
|
1751
|
-
* [<tt>@</tt>]
|
1752
|
-
* \[カラム値]が[値]を含んでいるかどうか
|
1739
|
+
* !!!text
|
1740
|
+
* rroongaの説明文の中で「groonga」が含まれる部分
|
1741
|
+
* ---
|
1742
|
+
* rroongaは<em>groonga</em>のいわゆるDB-APIの層の...
|
1743
|
+
* ---
|
1753
1744
|
* </pre>
|
1754
1745
|
*
|
1746
|
+
* _query_ には「[カラム名]:[演算子][値]」という書式で条件を
|
1747
|
+
* 指定する。演算子は以下の通り。
|
1748
|
+
*
|
1749
|
+
* - なし := [カラム値] == [値]
|
1750
|
+
* - @!@ := [カラム値] != [値]
|
1751
|
+
* - @<@ := [カラム値] < [値]
|
1752
|
+
* - @>@ := [カラム値] > [値]
|
1753
|
+
* - @<=@ := [カラム値] <= [値]
|
1754
|
+
* - @>=@ := [カラム値] >= [値]
|
1755
|
+
* - @@@ := [カラム値]が[値]を含んでいるかどうか
|
1756
|
+
*
|
1755
1757
|
* 例:
|
1758
|
+
*
|
1756
1759
|
* <pre>
|
1757
|
-
*
|
1758
|
-
*
|
1759
|
-
*
|
1760
|
+
* !!!ruby
|
1761
|
+
* "name:daijiro" # "name"カラムの値が"daijiro"のレコードにマッチ
|
1762
|
+
* "description:@groonga" # "description"カラムが
|
1763
|
+
* # "groonga"を含んでいるレコードにマッチ
|
1760
1764
|
* </pre>
|
1761
1765
|
*
|
1762
1766
|
* _expression_ には既に作成済みのGroonga::Expressionを渡す
|
@@ -1768,17 +1772,19 @@ rb_grn_table_is_locked (int argc, VALUE *argv, VALUE self)
|
|
1768
1772
|
* Groonga::ColumnExpressionBuilderの他に"!="も使用可能。
|
1769
1773
|
*
|
1770
1774
|
* 例:
|
1775
|
+
*
|
1771
1776
|
* <pre>
|
1772
|
-
*
|
1773
|
-
*
|
1774
|
-
*
|
1775
|
-
*
|
1776
|
-
*
|
1777
|
-
*
|
1778
|
-
*
|
1779
|
-
*
|
1780
|
-
*
|
1781
|
-
*
|
1777
|
+
* !!!ruby
|
1778
|
+
* comments = Groonga::Array.create(:name => "Comments")
|
1779
|
+
* comments.define_column("content", "Text")
|
1780
|
+
* comments.add(:content => "Hello Good-bye!")
|
1781
|
+
* comments.add(:content => "Hello World")
|
1782
|
+
* comments.add(:content => "test")
|
1783
|
+
* result = comments.select do |record|
|
1784
|
+
* record.content != "test"
|
1785
|
+
* end
|
1786
|
+
* p result.collect {|record| record.content}
|
1787
|
+
* # => ["Hello Good-bye!", "Hello World"]
|
1782
1788
|
* </pre>
|
1783
1789
|
*
|
1784
1790
|
* _options_ に指定可能な値は以下の通り。
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/ext/groonga/rb-grn.h
CHANGED
@@ -70,9 +70,9 @@ RB_GRN_BEGIN_DECLS
|
|
70
70
|
# define debug(...)
|
71
71
|
#endif
|
72
72
|
|
73
|
-
#define RB_GRN_MAJOR_VERSION
|
74
|
-
#define RB_GRN_MINOR_VERSION
|
75
|
-
#define RB_GRN_MICRO_VERSION
|
73
|
+
#define RB_GRN_MAJOR_VERSION 2
|
74
|
+
#define RB_GRN_MINOR_VERSION 0
|
75
|
+
#define RB_GRN_MICRO_VERSION 0
|
76
76
|
|
77
77
|
#define RB_GRN_QUERY_DEFAULT_MAX_EXPRESSIONS 32
|
78
78
|
|
@@ -97,6 +97,7 @@ struct _RbGrnContext
|
|
97
97
|
{
|
98
98
|
grn_ctx *context;
|
99
99
|
grn_ctx context_entity;
|
100
|
+
grn_hash *floating_objects;
|
100
101
|
VALUE self;
|
101
102
|
};
|
102
103
|
|
@@ -104,6 +105,7 @@ typedef struct _RbGrnObject RbGrnObject;
|
|
104
105
|
struct _RbGrnObject
|
105
106
|
{
|
106
107
|
VALUE self;
|
108
|
+
VALUE rb_context;
|
107
109
|
grn_ctx *context;
|
108
110
|
grn_obj *object;
|
109
111
|
grn_obj *domain;
|
@@ -112,6 +114,7 @@ struct _RbGrnObject
|
|
112
114
|
grn_id range_id;
|
113
115
|
grn_bool need_close;
|
114
116
|
grn_bool have_finalizer;
|
117
|
+
grn_bool floating;
|
115
118
|
};
|
116
119
|
|
117
120
|
typedef struct _RbGrnNamedObject RbGrnNamedObject;
|
@@ -282,7 +285,10 @@ const char *rb_grn_rc_to_message (grn_rc rc);
|
|
282
285
|
void rb_grn_rc_check (grn_rc rc,
|
283
286
|
VALUE related_object);
|
284
287
|
|
285
|
-
void
|
288
|
+
void rb_grn_context_register_floating_object
|
289
|
+
(RbGrnObject *rb_grn_object);
|
290
|
+
void rb_grn_context_unregister_floating_object
|
291
|
+
(RbGrnObject *rb_grn_object);
|
286
292
|
grn_ctx *rb_grn_context_ensure (VALUE *context);
|
287
293
|
VALUE rb_grn_context_get_default (void);
|
288
294
|
VALUE rb_grn_context_to_exception (grn_ctx *context,
|