rroonga 9.0.2 → 10.0.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +1 -0
  3. data/Rakefile +9 -142
  4. data/doc/text/news.md +73 -1
  5. data/doc/text/tutorial.md +1 -1
  6. data/ext/groonga/extconf.rb +9 -74
  7. data/ext/groonga/rb-grn-context.c +27 -0
  8. data/ext/groonga/rb-grn-expression-builder.c +3 -3
  9. data/ext/groonga/rb-grn-flushable.c +7 -0
  10. data/ext/groonga/rb-grn-index-column.c +28 -0
  11. data/ext/groonga/rb-grn-index-cursor.c +19 -0
  12. data/ext/groonga/rb-grn-logger.c +17 -3
  13. data/ext/groonga/rb-grn-object.c +236 -22
  14. data/ext/groonga/rb-grn-table-key-support.c +26 -7
  15. data/ext/groonga/rb-grn-table.c +119 -87
  16. data/ext/groonga/rb-grn-type.c +5 -1
  17. data/ext/groonga/rb-grn-utils.c +17 -1
  18. data/ext/groonga/rb-grn.h +7 -13
  19. data/ext/groonga/rb-groonga.c +2 -2
  20. data/lib/groonga.rb +3 -7
  21. data/lib/groonga/dumper.rb +3 -0
  22. data/lib/groonga/record.rb +2 -2
  23. data/rroonga.gemspec +4 -5
  24. data/test/groonga-test-utils.rb +34 -5
  25. data/test/run-test.rb +1 -3
  26. data/test/test-accessor.rb +63 -7
  27. data/test/test-column.rb +12 -1
  28. data/test/test-context.rb +25 -0
  29. data/test/test-exception.rb +5 -0
  30. data/test/test-flushable.rb +51 -6
  31. data/test/test-index-column.rb +67 -6
  32. data/test/test-index-cursor.rb +26 -0
  33. data/test/test-logger.rb +56 -11
  34. data/test/test-plugin.rb +1 -0
  35. data/test/test-query-logger.rb +4 -3
  36. data/test/test-record.rb +2 -1
  37. data/test/test-remote.rb +56 -10
  38. data/test/test-schema-dumper.rb +13 -0
  39. data/test/test-schema.rb +9 -1
  40. data/test/test-table-arrow.rb +1 -1
  41. data/test/test-table.rb +21 -1
  42. data/test/test-variable.rb +23 -7
  43. metadata +65 -106
@@ -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-2014 Kouhei Sutou <kou@clear-code.com>
3
+ Copyright (C) 2009-2020 Sutou Kouhei <kou@clear-code.com>
4
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
@@ -481,8 +481,10 @@ typedef struct _SetValueData
481
481
  } SetValueData;
482
482
 
483
483
  static VALUE
484
- set_value (VALUE args, SetValueData *data)
484
+ set_value (RB_BLOCK_CALL_FUNC_ARGLIST(yielded_arg, callback_arg))
485
485
  {
486
+ VALUE args = yielded_arg;
487
+ SetValueData *data = (SetValueData *)callback_arg;
486
488
  VALUE rb_name, rb_value, rb_column;
487
489
  RbGrnObject *rb_grn_object;
488
490
 
@@ -911,7 +913,9 @@ rb_grn_table_key_support_get_normalizer (VALUE self)
911
913
  * # Specifies normalizer object.
912
914
  * table.normalizer = Groonga::Context["NormalizerNFKC51"]
913
915
  * # Uses auto normalizer that is a normalizer for backward compatibility.
914
- * table.normalizer = "TNormalizerAuto"
916
+ * table.normalizer = "NormalizerAuto"
917
+ * # Uses a normalizer with options.
918
+ * table.normalizer = "NormalizerNFKC121('unify_kana', true)"
915
919
  *
916
920
  * @overload normalizer=(name)
917
921
  * @param [String] name Set a nomalizer named @name@.
@@ -927,7 +931,6 @@ rb_grn_table_key_support_set_normalizer (VALUE self, VALUE rb_normalizer)
927
931
  {
928
932
  grn_ctx *context;
929
933
  grn_obj *table;
930
- grn_obj *normalizer;
931
934
  grn_rc rc;
932
935
 
933
936
  rb_grn_table_key_support_deconstruct(SELF(self), &table, &context,
@@ -935,9 +938,25 @@ rb_grn_table_key_support_set_normalizer (VALUE self, VALUE rb_normalizer)
935
938
  NULL, NULL, NULL,
936
939
  NULL);
937
940
 
938
- normalizer = RVAL2GRNOBJECT(rb_normalizer, &context);
939
- rc = grn_obj_set_info(context, table, GRN_INFO_NORMALIZER, normalizer);
940
- rb_grn_context_check(context, self);
941
+ if (RB_TYPE_P(rb_normalizer, RUBY_T_STRING)) {
942
+ grn_obj normalizer;
943
+ VALUE exception;
944
+ GRN_TEXT_INIT(&normalizer, GRN_OBJ_DO_SHALLOW_COPY);
945
+ GRN_TEXT_SET(context,
946
+ &normalizer,
947
+ RSTRING_PTR(rb_normalizer),
948
+ RSTRING_LEN(rb_normalizer));
949
+ rc = grn_obj_set_info(context, table, GRN_INFO_NORMALIZER, &normalizer);
950
+ exception = rb_grn_context_to_exception(context, self);
951
+ GRN_OBJ_FIN(context, &normalizer);
952
+ if (!NIL_P(exception)) {
953
+ rb_exc_raise(exception);
954
+ }
955
+ } else {
956
+ grn_obj *normalizer = RVAL2GRNOBJECT(rb_normalizer, &context);
957
+ rc = grn_obj_set_info(context, table, GRN_INFO_NORMALIZER, normalizer);
958
+ rb_grn_context_check(context, self);
959
+ }
941
960
  rb_grn_rc_check(rc, self);
942
961
 
943
962
  return Qnil;
@@ -2,6 +2,7 @@
2
2
  /*
3
3
  Copyright (C) 2009-2017 Kouhei Sutou <kou@clear-code.com>
4
4
  Copyright (C) 2014-2016 Masafumi Yokoyama <yokoyama@clear-code.com>
5
+ Copyright (C) 2019 Horimoto Yasuhiro <horimoto@clear-code.com>
5
6
 
6
7
  This library is free software; you can redistribute it and/or
7
8
  modify it under the terms of the GNU Lesser General Public
@@ -29,9 +30,9 @@ static ID id_array_set;
29
30
  /*
30
31
  * Document-class: Groonga::Table < Groonga::Object
31
32
  *
32
- * Rroongaが提供するテーブルのベースとなるクラス。このクラス
33
- * から {Groonga::Array} , {Groonga::Hash} , {Groonga::PatriciaTrie}
34
- * が継承されている。
33
+ * This class is base class which represents Rroonga's table.
34
+ * {Groonga::Array} , {Groonga::Hash} , {Groonga::PatriciaTrie}
35
+ * are extended from this class.
35
36
  */
36
37
 
37
38
  grn_obj *
@@ -183,7 +184,8 @@ rb_grn_table_inspect_content (VALUE self, VALUE inspected)
183
184
  }
184
185
 
185
186
  /*
186
- * テーブルの中身を人に見やすい文字列で返す。
187
+ * This function return contents of a table as a string.
188
+ * It's easy to understand for human.
187
189
  *
188
190
  * @overload inspect
189
191
  * @return [String]
@@ -203,31 +205,33 @@ rb_grn_table_inspect (VALUE self)
203
205
  }
204
206
 
205
207
  /*
206
- * テーブルに名前が _name_ で型が _value_type_ のカラムを定義
207
- * し、新しく定義されたカラムを返す。
208
+ * Defines a column that name is `name` and type is `value_type`. It
209
+ * returns the newly defined column.
208
210
  *
209
211
  * @overload define_column(name, value_type, options={})
210
212
  * @param options [::Hash] The name and value
211
213
  * pairs. Omitted names are initialized as the default value.
212
- * @option options :path
213
- * カラムを保存するパス。
214
- * @option options :persistent (永続カラム)
215
- * +true+ を指定すると永続カラムとなる。省略した場合は永
216
- * 続カラムとなる。 +:path+ を省略した場合は自動的にパスが
217
- * 付加される。
214
+ * @option options :path [String, nil] (nil)
215
+ * The path to store the content of the column.
216
+ * If this is omitted, path is generated automatically.
217
+ * @option options :persistent [Boolean] (true)
218
+ * Whether the column is a persistent column or not.
219
+ * If this is `true` and `:path` is omitted, path is generated
220
+ * automatically.
218
221
  * @option options :type (:scalar)
219
- * カラムの値の格納方法について指定する。省略した場合は、
220
- * +:scalar+ になる。
222
+ * This option specifies how to store a value of a column.
223
+ * If this option is omitted, +:scalar+ is used.
221
224
  *
222
- * - +:scalar+ := スカラ値(単独の値)を格納する。
223
- * - +:vector+ := 値の配列を格納する。
225
+ * - +:scalar+ := Store scalar value.
226
+ * - +:vector+ := Store array value.
224
227
  * @option options [Boolean] :with_weight (false)
225
228
  * It specifies whether making the column weight vector column or not.
226
229
  * Weight vector column can store weight for each element.
227
230
  *
228
231
  * You can't use this option for scalar column.
229
232
  * @option options :compress
230
- * 値の圧縮方法を指定する。省略した場合は、圧縮しない。
233
+ * This option specifies how to compress values.
234
+ * If we omit this option, values are not compressed.
231
235
  *
232
236
  * * `:zlib`: Compressed by zlib.
233
237
  * * `:lz4`: Compressed by LZ4.
@@ -345,32 +349,37 @@ rb_grn_table_define_column (int argc, VALUE *argv, VALUE self)
345
349
  }
346
350
 
347
351
  /*
348
- * テーブルに名前が _name_ で型が _value_type_ のインデックスカ
349
- * ラムを定義し、新しく定義されたカラムを返す。
352
+ * Defines an index column that name is `name` and type is
353
+ * `value_type`. It returns the newly defined index column.
350
354
  *
351
355
  * @overload define_index_column(name, value_type, options={})
352
356
  * @param options [::Hash] The name and value
353
357
  * pairs. Omitted names are initialized as the default value.
354
- * @option options :path
355
- * カラムを保存するパス。
356
- * @option options :persistent (永続カラム)
357
- * +true+ を指定すると永続カラムとなる。省略した場合は永
358
- * 続カラムとなる。 +:path+ を省略した場合は自動的にパスが
359
- * 付加される。
360
- * @option options :with_section
361
- * 転置索引にsection(段落情報)を合わせて格納する。
362
- * @option options :with_weight
363
- * 転置索引にweight情報を合わせて格納する。
364
- * @option options :with_position
365
- * 転置索引に出現位置情報を合わせて格納する。
366
- * @option options :size (nil)
367
- * The size of index column. It must be `nil`, `:small` or
368
- * `:medium`. `nil` means full size. `:small` means small
369
- * size. `:medium` means medium size.
370
- * @option options :source
371
- * インデックス対象となるカラムを指定する。 +:sources+ との併用はできない。
372
- * @option options :sources
373
- * インデックス対象となる複数のカラムを指定する。 +:source+ との併用はできない。
358
+ * @option options :path [String, nil] (nil)
359
+ * The path to store the content of the index column.
360
+ * If this is omitted, path is generated automatically.
361
+ * @option options :persistent [Boolean] (true)
362
+ * Whether the index column is a persistent indent column or not.
363
+ * If this is `true` and `:path` is omitted, path is generated
364
+ * automatically.
365
+ * @option options :with_section [Boolean] (false)
366
+ * Whether section information is stored to the index column or not.
367
+ * @option options :with_weight [Boolean] (false)
368
+ * Whether weight information is stored to the index column or not.
369
+ * @option options :with_position [Boolean] (false)
370
+ * Whether position information is stored to the index column or not.
371
+ * @option options :size [Symbol, nil] (nil)
372
+ * The size of index column. It must be `nil`, `:small`,
373
+ * `:medium` or `:large`. `nil` means the default size.
374
+ * `:small` means small size. `:medium` means medium size. Medium size
375
+ * is smaller than the default size. `:large` means large size.
376
+ * Large size is larger than the default size.
377
+ * @option options :source [Groonga::Column, nil] (nil)
378
+ * Specifies the source column of the index column.
379
+ * This option can't be used with `:sources`.
380
+ * @option options :sources [::Array<Groonga::Column>, nil] (nil)
381
+ * Specifies the source columns of the index column.
382
+ * This option can't be used with `:source`.
374
383
  *
375
384
  * @return [Groonga::IndexColumn]
376
385
  */
@@ -461,9 +470,11 @@ rb_grn_table_define_index_column (int argc, VALUE *argv, VALUE self)
461
470
  flags |= GRN_OBJ_INDEX_SMALL;
462
471
  } else if (rb_grn_equal_option(rb_size, "medium")) {
463
472
  flags |= GRN_OBJ_INDEX_MEDIUM;
473
+ } else if (rb_grn_equal_option(rb_size, "large")) {
474
+ flags |= GRN_OBJ_INDEX_LARGE;
464
475
  } else {
465
476
  rb_raise(rb_eArgError,
466
- ":size must be nil, :small or :medium: <%" PRIsVALUE ">",
477
+ ":size must be nil, :small, :medium or :large: <%" PRIsVALUE ">",
467
478
  rb_size);
468
479
  }
469
480
 
@@ -514,8 +525,8 @@ ruby_object_to_column_name (VALUE rb_name,
514
525
  }
515
526
 
516
527
  /*
517
- * テーブルの _name_ に対応するカラムを返す。カラムが存在しな
518
- * い場合は +nil+ を返す。
528
+ * It returns the column has the specified name.
529
+ * If the specified column does not exist, it returns `nil`.
519
530
  *
520
531
  * @overload column(name)
521
532
  * @return [Groonga::Column, nil]
@@ -595,11 +606,15 @@ rb_grn_table_get_column_surely (VALUE self, VALUE rb_name)
595
606
  }
596
607
 
597
608
  /*
598
- * テーブルの全てのカラムを返す。 _name_ が指定された場合はカ
599
- * ラム名の先頭が _name_ で始まるカラムを返す。
609
+ * @overload columns(prefix=nil)
610
+ * It returns the specified columns in the table.
600
611
  *
601
- * @overload columns(name=nil)
602
- * @return [Groonga::Columnの配列]
612
+ * @param prefix [String, nil]
613
+ * If this is `nil`, it returns the all columns in table.
614
+ *
615
+ * Otherwise it returns columns which have name starts with `prefix`.
616
+ *
617
+ * @return [::Array<Groonga::Column>]
603
618
  */
604
619
  static VALUE
605
620
  rb_grn_table_get_columns (int argc, VALUE *argv, VALUE self)
@@ -611,9 +626,9 @@ rb_grn_table_get_columns (int argc, VALUE *argv, VALUE self)
611
626
  grn_rc rc;
612
627
  int n;
613
628
  grn_table_cursor *cursor;
614
- VALUE rb_name, rb_columns;
615
- char *name = NULL;
616
- unsigned name_size = 0;
629
+ VALUE rb_prefix, rb_columns;
630
+ char *prefix = NULL;
631
+ unsigned prefix_size = 0;
617
632
  VALUE exception;
618
633
 
619
634
  rb_grn_table_deconstruct(SELF(self), &table, &context,
@@ -621,18 +636,18 @@ rb_grn_table_get_columns (int argc, VALUE *argv, VALUE self)
621
636
  NULL, NULL, NULL,
622
637
  NULL);
623
638
 
624
- rb_scan_args(argc, argv, "01", &rb_name);
639
+ rb_scan_args(argc, argv, "01", &rb_prefix);
625
640
 
626
- if (!NIL_P(rb_name)) {
627
- name = StringValuePtr(rb_name);
628
- name_size = RSTRING_LEN(rb_name);
641
+ if (!NIL_P(rb_prefix)) {
642
+ prefix = StringValuePtr(rb_prefix);
643
+ prefix_size = RSTRING_LEN(rb_prefix);
629
644
  }
630
645
 
631
646
  key_type = grn_ctx_at(context, GRN_DB_SHORT_TEXT);
632
647
  columns = grn_table_create(context, NULL, 0, NULL, GRN_TABLE_HASH_KEY,
633
648
  key_type, 0);
634
649
  rb_grn_context_check(context, self);
635
- n = grn_table_columns(context, table, name, name_size, columns);
650
+ n = grn_table_columns(context, table, prefix, prefix_size, columns);
636
651
  rb_grn_context_check(context, self);
637
652
 
638
653
  rb_columns = rb_ary_new2(n);
@@ -690,9 +705,10 @@ rb_grn_table_get_columns (int argc, VALUE *argv, VALUE self)
690
705
  }
691
706
 
692
707
  /*
693
- * テーブルが _name_ カラムを持っている場合は +true+ を返す。
708
+ * Checks whether the table has a specified column or not.
694
709
  *
695
710
  * @overload have_column?(name)
711
+ * @return [Boolean] `true` if the table has a `name` column, `false` otherwise.
696
712
  */
697
713
  static VALUE
698
714
  rb_grn_table_have_column (VALUE self, VALUE rb_name)
@@ -873,11 +889,10 @@ rb_grn_table_open_cursor (int argc, VALUE *argv, VALUE self)
873
889
  }
874
890
 
875
891
  /*
876
- * テーブルに登録されている全てのレコードが入っている配列を
877
- * 返す。
878
- *
879
892
  * @overload records
880
- * @return [Groonga::Recordの配列]
893
+ * It returns all records in the table.
894
+ *
895
+ * @return [::Array<Groonga::Record>]
881
896
  */
882
897
  static VALUE
883
898
  rb_grn_table_get_records (int argc, VALUE *argv, VALUE self)
@@ -898,9 +913,9 @@ rb_grn_table_get_records (int argc, VALUE *argv, VALUE self)
898
913
  }
899
914
 
900
915
  /*
901
- * テーブルに登録されているレコード数を返す。
902
- *
903
916
  * @overload size
917
+ * It returns the number of records in the table.
918
+ *
904
919
  * @return [Integer]
905
920
  */
906
921
  static VALUE
@@ -919,9 +934,10 @@ rb_grn_table_get_size (VALUE self)
919
934
  }
920
935
 
921
936
  /*
922
- * テーブルにレコードが登録されていなければ +true+ を返す。
923
- *
924
937
  * @overload empty?
938
+ *
939
+ * @return [Boolean] `true` if the table has no records,
940
+ * `false` otherwise.
925
941
  */
926
942
  static VALUE
927
943
  rb_grn_table_empty_p (VALUE self)
@@ -939,9 +955,11 @@ rb_grn_table_empty_p (VALUE self)
939
955
  }
940
956
 
941
957
  /*
942
- * テーブルの全レコードを一括して削除する。
958
+ * Deletes all records in the table at once.
943
959
  *
944
960
  * @overload truncate
961
+ *
962
+ * @return [void]
945
963
  */
946
964
  static VALUE
947
965
  rb_grn_table_truncate (VALUE self)
@@ -1112,7 +1130,7 @@ rb_grn_table_delete_by_expression (VALUE self)
1112
1130
  *
1113
1131
  * @param id [Integer] The ID of delete target record.
1114
1132
  *
1115
- * @return void
1133
+ * @return [void]
1116
1134
  *
1117
1135
  * @overload delete
1118
1136
  * Delete records that are matched with the given condition
@@ -1130,7 +1148,7 @@ rb_grn_table_delete_by_expression (VALUE self)
1130
1148
  * @yieldreturn [Groonga::ExpressionBuilder]
1131
1149
  * TODO: See #select.
1132
1150
  *
1133
- * @return void
1151
+ * @return [void]
1134
1152
  */
1135
1153
  static VALUE
1136
1154
  rb_grn_table_delete (int argc, VALUE *argv, VALUE self)
@@ -1613,9 +1631,10 @@ rb_grn_table_each_sub_record (VALUE self, VALUE rb_id)
1613
1631
  }
1614
1632
 
1615
1633
  /*
1616
- * _table_ _id_ に対応する {Groonga::Record} を返す。
1634
+ * It returns the {Groonga::Record} for the `id` in the `table`.
1617
1635
  *
1618
- * 0.9.0から値ではなく {Groonga::Record} を返すようになった。
1636
+ * The return value has been changed to {Groonga::Record} from `id`
1637
+ * itself since 0.9.0.
1619
1638
  *
1620
1639
  * @overload [](id)
1621
1640
  * @return [Groonga::Record]
@@ -1653,16 +1672,16 @@ rb_grn_table_get_value (VALUE self, VALUE rb_id)
1653
1672
  }
1654
1673
 
1655
1674
  /*
1656
- * _table_ _id_ に対応する値を返す。
1675
+ * It returns the value for the `id` in the `table`.
1657
1676
  *
1658
- * @:id => true@ が指定できるのは利便性のため。
1659
- * {Groonga::Array} でも {Groonga::Hash} や {Groonga::PatriciaTrie} と
1660
- * 同じ引数で動くようになる。
1677
+ * You can specify `id: true` for the convenience. `id: true` works
1678
+ * with {Groonga::Array} like for {Groonga::Hash},
1679
+ * {Groonga::PatriciaTrie} and so on.
1661
1680
  *
1662
1681
  * @overload value(id)
1663
- * @return []
1664
- * @overload value(id, :id => true)
1665
- * @return []
1682
+ * @return [value]
1683
+ * @overload value(id, id: true)
1684
+ * @return [value]
1666
1685
  */
1667
1686
  static VALUE
1668
1687
  rb_grn_table_get_value_convenience (int argc, VALUE *argv, VALUE self)
@@ -2482,8 +2501,8 @@ rb_grn_table_support_key_p (VALUE self)
2482
2501
  /*
2483
2502
  * @overload support_value?
2484
2503
  *
2485
- * @return @true@ if the table is created with value type, @false@
2486
- * otherwise.
2504
+ * @return [Boolean] `true` if the table is created with value type,
2505
+ * `false` otherwise.
2487
2506
  */
2488
2507
  static VALUE
2489
2508
  rb_grn_table_support_value_p (VALUE self)
@@ -2498,11 +2517,11 @@ rb_grn_table_support_value_p (VALUE self)
2498
2517
  }
2499
2518
 
2500
2519
  /*
2501
- * グループ化したとき、テーブルにグループに含まれるレコード
2502
- * 数を格納できる場合は +true+ 、格納できない場合は +false+ を返
2503
- * す。
2504
- *
2505
2520
  * @overload support_sub_records?
2521
+ *
2522
+ * @return [Boolean] `true` if the table can store the number of
2523
+ * records for each group when the table is grouped, `false`
2524
+ * otherwise.
2506
2525
  */
2507
2526
  static VALUE
2508
2527
  rb_grn_table_support_sub_records_p (VALUE self)
@@ -2517,6 +2536,19 @@ rb_grn_table_support_sub_records_p (VALUE self)
2517
2536
  return CBOOL2RVAL(grn_table_is_grouped(context, table));
2518
2537
  }
2519
2538
 
2539
+ /*
2540
+ * @overload support_score?
2541
+ *
2542
+ * @return [Boolean] `true` if the table has `_score` column,
2543
+ * `false` otherwise.
2544
+ */
2545
+ static VALUE
2546
+ rb_grn_table_support_score_p (VALUE self)
2547
+ {
2548
+ return CBOOL2RVAL(rb_grn_table_have_column(self,
2549
+ rb_str_new_literal("_score")));
2550
+ }
2551
+
2520
2552
  /*
2521
2553
  * {Groonga::Table#group} returns a table that contains grouped
2522
2554
  * records. If grouped table has a space to store the number of
@@ -2554,13 +2586,11 @@ rb_grn_table_have_n_sub_records_space_p (VALUE self)
2554
2586
  }
2555
2587
 
2556
2588
  /*
2557
- * _table_ に _id_ で指定したIDのレコードが存在する場合は +true+ 、
2558
- * 存在しない場合は +false+ を返す。
2559
- *
2560
- * 注意: 実行には相応のコストがかかるのであまり頻繁に呼ばな
2561
- * いようにして下さい。
2562
- *
2563
2589
  * @overload exist?(id)
2590
+ * @return [Boolean] `true` if the table has a record specified ID
2591
+ * by `id`, `false` otherwise.
2592
+ *
2593
+ * @note This method is heavy. You should not call this as much as possible.
2564
2594
  */
2565
2595
  static VALUE
2566
2596
  rb_grn_table_exist_p (VALUE self, VALUE id)
@@ -2890,6 +2920,8 @@ rb_grn_init_table (VALUE mGrn)
2890
2920
  rb_grn_table_support_value_p, 0);
2891
2921
  rb_define_method(rb_cGrnTable, "support_sub_records?",
2892
2922
  rb_grn_table_support_sub_records_p, 0);
2923
+ rb_define_method(rb_cGrnTable, "support_score?",
2924
+ rb_grn_table_support_score_p, 0);
2893
2925
  rb_define_method(rb_cGrnTable, "have_n_sub_records_space?",
2894
2926
  rb_grn_table_have_n_sub_records_space_p, 0);
2895
2927