rroonga 5.0.9 → 5.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Rakefile +2 -1
- data/ext/groonga/{rb-grn-conf.c → rb-grn-config.c} +18 -13
- data/ext/groonga/rb-grn-database.c +83 -0
- data/ext/groonga/rb-grn-fix-size-column.c +85 -0
- data/ext/groonga/rb-grn-index-column.c +82 -0
- data/ext/groonga/rb-grn-object.c +67 -1
- data/ext/groonga/rb-grn-table-key-support.c +87 -1
- data/ext/groonga/rb-grn-table.c +2 -2
- data/ext/groonga/rb-grn-variable-size-column.c +84 -1
- data/ext/groonga/rb-grn.h +5 -5
- data/ext/groonga/rb-groonga.c +27 -1
- data/lib/groonga/context.rb +12 -3
- data/lib/groonga/expression-builder.rb +2 -1
- data/rroonga-build.rb +6 -6
- data/test/test-accessor.rb +30 -0
- data/test/{test-conf.rb → test-config.rb} +5 -5
- data/test/test-database.rb +41 -0
- data/test/test-fix-size-column.rb +84 -0
- data/test/test-index-column.rb +71 -1
- data/test/test-package-label.rb +20 -0
- data/test/test-table-key-support.rb +42 -0
- data/test/test-table.rb +13 -0
- data/test/test-variable-size-column.rb +71 -1
- metadata +53 -51
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dd322f4e7d09549b297741d7844509cfdee161f8
|
4
|
+
data.tar.gz: 505a55c349328722cc84a66931082b63b3bea98c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f5603abe42c2c29c4ee01baf3852a60b4adfdc594a9f7776a4acdd3c84a2a51f45131dc6a8bfba8b2d127846e8a18ab2e8d27c0028ec8747d7b2d3685381ca61
|
7
|
+
data.tar.gz: 9c064d2e23eb9cd6bd53c3cf7b38baa6a69c2204973604c41717044fd12c4f213e1d1311b8f4f3758689f9ecd9ecb675a6ff17f3955688076a2c03e9c9a497a8
|
data/Rakefile
CHANGED
@@ -157,7 +157,7 @@ windows_architectures = [:x86, :x64]
|
|
157
157
|
|
158
158
|
namespace :build do
|
159
159
|
namespace :windows do
|
160
|
-
ruby_versions = "2.0.0:2.1.6:2.2.2"
|
160
|
+
ruby_versions = "2.0.0:2.1.6:2.2.2:2.3.0"
|
161
161
|
|
162
162
|
windows_architectures.each do |architecture|
|
163
163
|
desc "Build gem for Windows #{architecture}"
|
@@ -169,6 +169,7 @@ namespace :build do
|
|
169
169
|
commands = [
|
170
170
|
["git", "clone", "file://#{Dir.pwd}/.git", build_dir],
|
171
171
|
["cd", build_dir],
|
172
|
+
["gem", "install", "json"],
|
172
173
|
["bundle"],
|
173
174
|
["rake", "cross", "native", "gem", "RUBY_CC_VERSION=#{ruby_versions}"],
|
174
175
|
]
|
@@ -1,6 +1,6 @@
|
|
1
1
|
/* -*- coding: utf-8; mode: C; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
2
2
|
/*
|
3
|
-
Copyright (C) 2015 Kouhei Sutou <kou@clear-code.com>
|
3
|
+
Copyright (C) 2015-2016 Kouhei Sutou <kou@clear-code.com>
|
4
4
|
|
5
5
|
This library is free software; you can redistribute it and/or
|
6
6
|
modify it under the terms of the GNU Lesser General Public
|
@@ -21,7 +21,7 @@
|
|
21
21
|
#define SELF(object) (RVAL2GRNCONTEXT(object))
|
22
22
|
|
23
23
|
/*
|
24
|
-
* Document-class: Groonga::
|
24
|
+
* Document-class: Groonga::Config
|
25
25
|
*
|
26
26
|
* This class manages database global configurations. Each
|
27
27
|
* configuration is key and value pair.
|
@@ -37,7 +37,7 @@
|
|
37
37
|
* @since 5.0.9
|
38
38
|
*/
|
39
39
|
static VALUE
|
40
|
-
|
40
|
+
rb_grn_config_initialize (VALUE self, VALUE rb_context)
|
41
41
|
{
|
42
42
|
rb_iv_set(self, "@context", rb_context);
|
43
43
|
|
@@ -47,14 +47,14 @@ rb_grn_conf_initialize (VALUE self, VALUE rb_context)
|
|
47
47
|
/*
|
48
48
|
* Gets a configuration value for key.
|
49
49
|
*
|
50
|
-
* @overload
|
50
|
+
* @overload config[](key)
|
51
51
|
* @param [String] key The key.
|
52
52
|
* @return [String, nil] The value associated with `key`.
|
53
53
|
*
|
54
54
|
* @since 5.0.9
|
55
55
|
*/
|
56
56
|
static VALUE
|
57
|
-
|
57
|
+
rb_grn_config_get (VALUE self, VALUE rb_key)
|
58
58
|
{
|
59
59
|
VALUE rb_context;
|
60
60
|
VALUE rb_value;
|
@@ -73,6 +73,8 @@ rb_grn_conf_get (VALUE self, VALUE rb_key)
|
|
73
73
|
|
74
74
|
{
|
75
75
|
grn_rc rc;
|
76
|
+
/* TODO: Replace it with grn_config_get() after Groonga 5.1.2
|
77
|
+
* is released.*/
|
76
78
|
rc = grn_conf_get(context,
|
77
79
|
key, key_size,
|
78
80
|
&value, &value_size);
|
@@ -92,13 +94,13 @@ rb_grn_conf_get (VALUE self, VALUE rb_key)
|
|
92
94
|
/*
|
93
95
|
* Sets a configuration key and value pair.
|
94
96
|
*
|
95
|
-
* @overload
|
97
|
+
* @overload config[]=(key, value)
|
96
98
|
* @param [String] key The key.
|
97
99
|
* @param [String] value The value to be assigned.
|
98
100
|
* @return [String] `value`.
|
99
101
|
*/
|
100
102
|
static VALUE
|
101
|
-
|
103
|
+
rb_grn_config_set (VALUE self, VALUE rb_key, VALUE rb_value)
|
102
104
|
{
|
103
105
|
VALUE rb_value_original = rb_value;
|
104
106
|
VALUE rb_context;
|
@@ -121,6 +123,8 @@ rb_grn_conf_set (VALUE self, VALUE rb_key, VALUE rb_value)
|
|
121
123
|
|
122
124
|
{
|
123
125
|
grn_rc rc;
|
126
|
+
/* TODO: Replace it with grn_config_set() after Groonga 5.1.2
|
127
|
+
* is released.*/
|
124
128
|
rc = grn_conf_set(context,
|
125
129
|
key, key_size,
|
126
130
|
value, value_size);
|
@@ -132,14 +136,15 @@ rb_grn_conf_set (VALUE self, VALUE rb_key, VALUE rb_value)
|
|
132
136
|
}
|
133
137
|
|
134
138
|
void
|
135
|
-
|
139
|
+
rb_grn_init_config (VALUE mGrn)
|
136
140
|
{
|
137
|
-
VALUE
|
141
|
+
VALUE cGrnConfig;
|
138
142
|
|
139
|
-
|
143
|
+
cGrnConfig = rb_define_class_under(mGrn, "Config", rb_cObject);
|
144
|
+
rb_define_const(mGrn, "Conf", cGrnConfig);
|
140
145
|
|
141
|
-
rb_define_method(
|
146
|
+
rb_define_method(cGrnConfig, "initialize", rb_grn_config_initialize, 1);
|
142
147
|
|
143
|
-
rb_define_method(
|
144
|
-
rb_define_method(
|
148
|
+
rb_define_method(cGrnConfig, "[]", rb_grn_config_get, 1);
|
149
|
+
rb_define_method(cGrnConfig, "[]=", rb_grn_config_set, 2);
|
145
150
|
}
|
@@ -1,6 +1,7 @@
|
|
1
1
|
/* -*- coding: utf-8; mode: C; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
2
2
|
/*
|
3
3
|
Copyright (C) 2009-2015 Kouhei Sutou <kou@clear-code.com>
|
4
|
+
Copyright (C) 2016 Masafumi Yokoyama <yokoyama@clear-code.com>
|
4
5
|
|
5
6
|
This library is free software; you can redistribute it and/or
|
6
7
|
modify it under the terms of the GNU Lesser General Public
|
@@ -623,6 +624,87 @@ rb_grn_database_unmap (VALUE self)
|
|
623
624
|
return Qnil;
|
624
625
|
}
|
625
626
|
|
627
|
+
/*
|
628
|
+
* Recreates all index columns in the database.
|
629
|
+
*
|
630
|
+
* This method is useful when you have any broken index columns in
|
631
|
+
* the database. You don't need to specify each index column. But
|
632
|
+
* this method spends more time rather than you specify only reindex
|
633
|
+
* needed index columns.
|
634
|
+
*
|
635
|
+
* You can use {Groonga::TableKeySupport#reindex} to specify reindex
|
636
|
+
* target index columns in a table.
|
637
|
+
*
|
638
|
+
* You can use {Groonga::FixSizeColumn#reindex} or
|
639
|
+
* {Groonga::VariableSizeColumn#reindex} to specify reindex target
|
640
|
+
* index columns. They use index columns of the data column as
|
641
|
+
* reindex target index columns.
|
642
|
+
*
|
643
|
+
* You can use {Groonga::IndexColumn#reindex} to specify the reindex
|
644
|
+
* target index column.
|
645
|
+
*
|
646
|
+
* @example How to recreate all index columns in the database
|
647
|
+
* database = Groonga::Database.create(:path => "/tmp/db")
|
648
|
+
*
|
649
|
+
* Groonga::Schema.define do |schema|
|
650
|
+
* schema.create_table("Memos") do |table|
|
651
|
+
* table.short_text("title")
|
652
|
+
* table.text("content")
|
653
|
+
* end
|
654
|
+
*
|
655
|
+
* schema.create_table("BigramTerms",
|
656
|
+
* :type => :patricia_trie,
|
657
|
+
* :key_type => :short_text,
|
658
|
+
* :normalizer => "NormalizerAuto",
|
659
|
+
* :default_tokenizer => "TokenBigram") do |table|
|
660
|
+
* table.index("Memos.title")
|
661
|
+
* table.index("Memos.content")
|
662
|
+
* end
|
663
|
+
*
|
664
|
+
* schema.create_table("MeCabTerms",
|
665
|
+
* :type => :patricia_trie,
|
666
|
+
* :key_type => :short_text,
|
667
|
+
* :normalizer => "NormalizerAuto",
|
668
|
+
* :default_tokenizer => "TokenMecab") do |table|
|
669
|
+
* table.index("Memos.title")
|
670
|
+
* table.index("Memos.content")
|
671
|
+
* end
|
672
|
+
* end
|
673
|
+
*
|
674
|
+
* database.reindex
|
675
|
+
* # They are called:
|
676
|
+
* # Groonga["BigramTerms.Memos_title"].reindex
|
677
|
+
* # Groonga["BigramTerms.Memos_content"].reindex
|
678
|
+
* # Groonga["MeCabTerms.Memos_title"].reindex
|
679
|
+
* # Groonga["MeCabTerms.Memos_content"].reindex
|
680
|
+
*
|
681
|
+
* @overload reindex
|
682
|
+
* @return [void]
|
683
|
+
*
|
684
|
+
* @see Groonga::TableKeySupport#reindex
|
685
|
+
* @see Groonga::FixSizeColumn#reindex
|
686
|
+
* @see Groonga::VariableSizeColumn#reindex
|
687
|
+
* @see Groonga::IndexColumn#reindex
|
688
|
+
*
|
689
|
+
* @since 5.1.1
|
690
|
+
*/
|
691
|
+
static VALUE
|
692
|
+
rb_grn_database_reindex (VALUE self)
|
693
|
+
{
|
694
|
+
grn_rc rc;
|
695
|
+
grn_ctx *context;
|
696
|
+
grn_obj *database;
|
697
|
+
|
698
|
+
rb_grn_database_deconstruct(SELF(self), &database, &context,
|
699
|
+
NULL, NULL, NULL, NULL);
|
700
|
+
|
701
|
+
rc = grn_obj_reindex(context, database);
|
702
|
+
rb_grn_context_check(context, self);
|
703
|
+
rb_grn_rc_check(rc, self);
|
704
|
+
|
705
|
+
return Qnil;
|
706
|
+
}
|
707
|
+
|
626
708
|
void
|
627
709
|
rb_grn_init_database (VALUE mGrn)
|
628
710
|
{
|
@@ -657,4 +739,5 @@ rb_grn_init_database (VALUE mGrn)
|
|
657
739
|
rb_define_method(rb_cGrnDatabase, "defrag", rb_grn_database_defrag, -1);
|
658
740
|
rb_define_method(rb_cGrnDatabase, "recover", rb_grn_database_recover, 0);
|
659
741
|
rb_define_method(rb_cGrnDatabase, "unmap", rb_grn_database_unmap, 0);
|
742
|
+
rb_define_method(rb_cGrnDatabase, "reindex", rb_grn_database_reindex, 0);
|
660
743
|
}
|
@@ -1,6 +1,7 @@
|
|
1
1
|
/* -*- coding: utf-8; mode: C; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
2
2
|
/*
|
3
3
|
Copyright (C) 2009-2010 Kouhei Sutou <kou@clear-code.com>
|
4
|
+
Copyright (C) 2016 Masafumi Yokoyama <yokoyama@clear-code.com>
|
4
5
|
|
5
6
|
This library is free software; you can redistribute it and/or
|
6
7
|
modify it under the terms of the GNU Lesser General Public
|
@@ -141,6 +142,87 @@ rb_grn_fix_size_column_decrement (int argc, VALUE *argv, VALUE self)
|
|
141
142
|
return rb_grn_fix_size_column_integer_set(argc, argv, self, GRN_OBJ_DECR);
|
142
143
|
}
|
143
144
|
|
145
|
+
/*
|
146
|
+
* Recreates all index columns for the column.
|
147
|
+
*
|
148
|
+
* This method is useful when you have any broken index columns for
|
149
|
+
* the column. You don't need to specify each index column. But this
|
150
|
+
* method spends more time rather than you specify only reindex
|
151
|
+
* needed index columns.
|
152
|
+
*
|
153
|
+
* You can use {Groonga::Database#reindex} to recreate all index
|
154
|
+
* columns in a database.
|
155
|
+
*
|
156
|
+
* You can use {Groonga::TableKeySupport#reindex} to recreate all
|
157
|
+
* index columns in a table.
|
158
|
+
*
|
159
|
+
* You can use {Groonga::IndexColumn#reindex} to specify the reindex
|
160
|
+
* target index column.
|
161
|
+
*
|
162
|
+
* @example How to recreate all index columns for the column
|
163
|
+
* Groonga::Schema.define do |schema|
|
164
|
+
* schema.create_table("Users") do |table|
|
165
|
+
* table.integer32("age")
|
166
|
+
* table.integer32("score")
|
167
|
+
* end
|
168
|
+
*
|
169
|
+
* schema.create_table("Numbers",
|
170
|
+
* :type => :patricia_trie,
|
171
|
+
* :key_type => :integer32) do |table|
|
172
|
+
* table.index("Users.age")
|
173
|
+
* table.index("Users.score")
|
174
|
+
* end
|
175
|
+
*
|
176
|
+
* schema.create_table("Ages",
|
177
|
+
* :type => :patricia_trie,
|
178
|
+
* :key_type => :integer32) do |table|
|
179
|
+
* table.index("Users.age")
|
180
|
+
* end
|
181
|
+
*
|
182
|
+
* schema.create_table("Scores",
|
183
|
+
* :type => :patricia_trie,
|
184
|
+
* :key_type => :integer32) do |table|
|
185
|
+
* table.index("Users.score")
|
186
|
+
* end
|
187
|
+
* end
|
188
|
+
*
|
189
|
+
* Groonga["Users.age"].reindex
|
190
|
+
* # They are called:
|
191
|
+
* # Groonga["Numbers.Users_age"].reindex
|
192
|
+
* # Groonga["Ages.Users_age"].reindex
|
193
|
+
* #
|
194
|
+
* # They aren't called:
|
195
|
+
* # Groonga["Numbers.Users_score"].reindex
|
196
|
+
* # Groonga["Scores.Users_score"].reindex
|
197
|
+
*
|
198
|
+
* @overload reindex
|
199
|
+
* @return [void]
|
200
|
+
*
|
201
|
+
* @see Groonga::Database#reindex
|
202
|
+
* @see Groonga::TableKeySupport#reindex
|
203
|
+
* @see Groonga::VariableSizeColumn#reindex
|
204
|
+
* @see Groonga::IndexColumn#reindex
|
205
|
+
*
|
206
|
+
* @since 5.1.1
|
207
|
+
*/
|
208
|
+
static VALUE
|
209
|
+
rb_grn_fix_size_column_reindex (VALUE self)
|
210
|
+
{
|
211
|
+
grn_rc rc;
|
212
|
+
grn_ctx *context;
|
213
|
+
grn_obj *column;
|
214
|
+
|
215
|
+
rb_grn_column_deconstruct(SELF(self), &column, &context,
|
216
|
+
NULL, NULL,
|
217
|
+
NULL, NULL, NULL);
|
218
|
+
|
219
|
+
rc = grn_obj_reindex(context, column);
|
220
|
+
rb_grn_context_check(context, self);
|
221
|
+
rb_grn_rc_check(rc, self);
|
222
|
+
|
223
|
+
return Qnil;
|
224
|
+
}
|
225
|
+
|
144
226
|
void
|
145
227
|
rb_grn_init_fix_size_column (VALUE mGrn)
|
146
228
|
{
|
@@ -156,4 +238,7 @@ rb_grn_init_fix_size_column (VALUE mGrn)
|
|
156
238
|
rb_grn_fix_size_column_increment, -1);
|
157
239
|
rb_define_method(rb_cGrnFixSizeColumn, "decrement!",
|
158
240
|
rb_grn_fix_size_column_decrement, -1);
|
241
|
+
|
242
|
+
rb_define_method(rb_cGrnFixSizeColumn, "reindex",
|
243
|
+
rb_grn_fix_size_column_reindex, 0);
|
159
244
|
}
|
@@ -1,6 +1,7 @@
|
|
1
1
|
/* -*- coding: utf-8; mode: C; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
2
2
|
/*
|
3
3
|
Copyright (C) 2009-2015 Kouhei Sutou <kou@clear-code.com>
|
4
|
+
Copyright (C) 2016 Masafumi Yokoyama <yokoyama@clear-code.com>
|
4
5
|
|
5
6
|
This library is free software; you can redistribute it and/or
|
6
7
|
modify it under the terms of the GNU Lesser General Public
|
@@ -1187,6 +1188,84 @@ rb_grn_index_column_estimate_size (int argc, VALUE *argv, VALUE self)
|
|
1187
1188
|
return UINT2NUM(size);
|
1188
1189
|
}
|
1189
1190
|
|
1191
|
+
/*
|
1192
|
+
* Recreates the index column.
|
1193
|
+
*
|
1194
|
+
* This method is useful when you have a broken index column.
|
1195
|
+
*
|
1196
|
+
* You can use {Groonga::Database#reindex} to recreate all index
|
1197
|
+
* columns in a database.
|
1198
|
+
*
|
1199
|
+
* You can use {Groonga::TableKeySupport#reindex} to recreate all
|
1200
|
+
* index columns in a table.
|
1201
|
+
*
|
1202
|
+
* You can use {Groonga::FixSizeColumn#reindex} or
|
1203
|
+
* {Groonga::VariableSizeColumn#reindex} to recreate all index
|
1204
|
+
* columns. They use index columns of the data column as
|
1205
|
+
* reindex target index columns.
|
1206
|
+
*
|
1207
|
+
* @example How to recreate the index column.
|
1208
|
+
* Groonga::Schema.define do |schema|
|
1209
|
+
* schema.create_table("Memos") do |table|
|
1210
|
+
* table.short_text("title")
|
1211
|
+
* table.text("content")
|
1212
|
+
* end
|
1213
|
+
*
|
1214
|
+
* schema.create_table("BigramTerms",
|
1215
|
+
* :type => :patricia_trie,
|
1216
|
+
* :key_type => :short_text,
|
1217
|
+
* :normalizer => "NormalizerAuto",
|
1218
|
+
* :default_tokenizer => "TokenBigram") do |table|
|
1219
|
+
* table.index("Memos.title")
|
1220
|
+
* table.index("Memos.content")
|
1221
|
+
* end
|
1222
|
+
*
|
1223
|
+
* schema.create_table("MeCabTerms",
|
1224
|
+
* :type => :patricia_trie,
|
1225
|
+
* :key_type => :short_text,
|
1226
|
+
* :normalizer => "NormalizerAuto",
|
1227
|
+
* :default_tokenizer => "TokenMecab") do |table|
|
1228
|
+
* table.index("Memos.title")
|
1229
|
+
* table.index("Memos.content")
|
1230
|
+
* end
|
1231
|
+
* end
|
1232
|
+
*
|
1233
|
+
* Groonga["MeCabTerms.Memos_content"].reindex
|
1234
|
+
* # They aren't called:
|
1235
|
+
* # Groonga["BigramTerms.Memos_title"].reindex
|
1236
|
+
* # Groonga["BigramTerms.Memos_content"].reindex
|
1237
|
+
* # Groonga["MeCabTerms.Memos_title"].reindex
|
1238
|
+
*
|
1239
|
+
* @overload reindex
|
1240
|
+
* @return [void]
|
1241
|
+
*
|
1242
|
+
* @see Groonga::Database#reindex
|
1243
|
+
* @see Groonga::TableKeySupport#reindex
|
1244
|
+
* @see Groonga::FixSizeColumn#reindex
|
1245
|
+
* @see Groonga::VariableSizeColumn#reindex
|
1246
|
+
*
|
1247
|
+
* @since 5.1.1
|
1248
|
+
*/
|
1249
|
+
static VALUE
|
1250
|
+
rb_grn_index_column_reindex (VALUE self)
|
1251
|
+
{
|
1252
|
+
grn_rc rc;
|
1253
|
+
grn_ctx *context;
|
1254
|
+
grn_obj *column;
|
1255
|
+
|
1256
|
+
rb_grn_index_column_deconstruct(SELF(self), &column, &context,
|
1257
|
+
NULL, NULL,
|
1258
|
+
NULL, NULL, NULL,
|
1259
|
+
NULL, NULL,
|
1260
|
+
NULL, NULL);
|
1261
|
+
|
1262
|
+
rc = grn_obj_reindex(context, column);
|
1263
|
+
rb_grn_context_check(context, self);
|
1264
|
+
rb_grn_rc_check(rc, self);
|
1265
|
+
|
1266
|
+
return Qnil;
|
1267
|
+
}
|
1268
|
+
|
1190
1269
|
void
|
1191
1270
|
rb_grn_init_index_column (VALUE mGrn)
|
1192
1271
|
{
|
@@ -1225,4 +1304,7 @@ rb_grn_init_index_column (VALUE mGrn)
|
|
1225
1304
|
|
1226
1305
|
rb_define_method(rb_cGrnIndexColumn, "estimate_size",
|
1227
1306
|
rb_grn_index_column_estimate_size, -1);
|
1307
|
+
|
1308
|
+
rb_define_method(rb_cGrnIndexColumn, "reindex",
|
1309
|
+
rb_grn_index_column_reindex, 0);
|
1228
1310
|
}
|
data/ext/groonga/rb-grn-object.c
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
/* -*- coding: utf-8; mode: C; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
2
2
|
/*
|
3
3
|
Copyright (C) 2009-2014 Kouhei Sutou <kou@clear-code.com>
|
4
|
-
Copyright (C) 2014-
|
4
|
+
Copyright (C) 2014-2016 Masafumi Yokoyama <yokoyama@clear-code.com>
|
5
5
|
|
6
6
|
This library is free software; you can redistribute it and/or
|
7
7
|
modify it under the terms of the GNU Lesser General Public
|
@@ -1656,6 +1656,68 @@ rb_grn_object_scorer_procedure_p (VALUE self)
|
|
1656
1656
|
return CBOOL2RVAL(scorer_procedure_p);
|
1657
1657
|
}
|
1658
1658
|
|
1659
|
+
/*
|
1660
|
+
* Checks whether the object is accessor or not.
|
1661
|
+
*
|
1662
|
+
* @overload accessor?
|
1663
|
+
* @return [Boolean] `true` if the object is accessor,
|
1664
|
+
* `false` otherwise.
|
1665
|
+
*
|
1666
|
+
* @since 5.1.1
|
1667
|
+
*/
|
1668
|
+
static VALUE
|
1669
|
+
rb_grn_object_accessor_p (VALUE self)
|
1670
|
+
{
|
1671
|
+
grn_ctx *context;
|
1672
|
+
grn_obj *object;
|
1673
|
+
grn_bool accessor_p = GRN_FALSE;
|
1674
|
+
|
1675
|
+
rb_grn_object_deconstruct(SELF(self), &object, &context,
|
1676
|
+
NULL, NULL, NULL, NULL);
|
1677
|
+
|
1678
|
+
if (context && object) {
|
1679
|
+
accessor_p = grn_obj_is_accessor(context, object);
|
1680
|
+
}
|
1681
|
+
|
1682
|
+
return CBOOL2RVAL(accessor_p);
|
1683
|
+
}
|
1684
|
+
|
1685
|
+
/*
|
1686
|
+
* Checks whether the object is key accessor or not.
|
1687
|
+
*
|
1688
|
+
* @example `true` case: `column("_key")` is an accessor and it's an accessor for `_key`
|
1689
|
+
* Groonga::Schema.create_table("Users", :key_type => :short_text)
|
1690
|
+
* users = Groonga["Users"]
|
1691
|
+
* users.column("_key").key_accessor? # => true
|
1692
|
+
*
|
1693
|
+
* @example `false` case: `column("_id")` is an accessor but it's not an accessor for `_key`
|
1694
|
+
* Groonga::Schema.create_table("Users", :key_type => :short_text)
|
1695
|
+
* users = Groonga["Users"]
|
1696
|
+
* users.column("_id").key_accessor? # => false
|
1697
|
+
*
|
1698
|
+
* @overload key_accessor?
|
1699
|
+
* @return [Boolean] `true` if the object is key accessor,
|
1700
|
+
* `false` otherwise.
|
1701
|
+
*
|
1702
|
+
* @since 5.1.1
|
1703
|
+
*/
|
1704
|
+
static VALUE
|
1705
|
+
rb_grn_object_key_accessor_p (VALUE self)
|
1706
|
+
{
|
1707
|
+
grn_ctx *context;
|
1708
|
+
grn_obj *object;
|
1709
|
+
grn_bool key_accessor_p = GRN_FALSE;
|
1710
|
+
|
1711
|
+
rb_grn_object_deconstruct(SELF(self), &object, &context,
|
1712
|
+
NULL, NULL, NULL, NULL);
|
1713
|
+
|
1714
|
+
if (context && object) {
|
1715
|
+
key_accessor_p = grn_obj_is_key_accessor(context, object);
|
1716
|
+
}
|
1717
|
+
|
1718
|
+
return CBOOL2RVAL(key_accessor_p);
|
1719
|
+
}
|
1720
|
+
|
1659
1721
|
void
|
1660
1722
|
rb_grn_init_object (VALUE mGrn)
|
1661
1723
|
{
|
@@ -1701,4 +1763,8 @@ rb_grn_init_object (VALUE mGrn)
|
|
1701
1763
|
rb_grn_object_selector_only_procedure_p, 0);
|
1702
1764
|
rb_define_method(rb_cGrnObject, "scorer_procedure?",
|
1703
1765
|
rb_grn_object_scorer_procedure_p, 0);
|
1766
|
+
rb_define_method(rb_cGrnObject, "accessor?",
|
1767
|
+
rb_grn_object_accessor_p, 0);
|
1768
|
+
rb_define_method(rb_cGrnObject, "key_accessor?",
|
1769
|
+
rb_grn_object_key_accessor_p, 0);
|
1704
1770
|
}
|