rroonga 3.0.5-x86-mingw32 → 3.0.6-x86-mingw32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/AUTHORS +5 -0
- data/Gemfile +20 -0
- data/Rakefile +187 -0
- data/doc/text/news.textile +7 -0
- data/doc/text/tutorial.textile +0 -2
- data/ext/groonga/extconf.rb +7 -1
- data/ext/groonga/rb-grn-accessor.c +11 -11
- data/ext/groonga/rb-grn-array.c +25 -25
- data/ext/groonga/rb-grn-column.c +106 -106
- data/ext/groonga/rb-grn-context.c +121 -121
- data/ext/groonga/rb-grn-database.c +78 -78
- data/ext/groonga/rb-grn-double-array-trie.c +92 -92
- data/ext/groonga/rb-grn-encoding-support.c +1 -1
- data/ext/groonga/rb-grn-encoding.c +28 -28
- data/ext/groonga/rb-grn-exception.c +9 -9
- data/ext/groonga/rb-grn-expression-builder.c +6 -6
- data/ext/groonga/rb-grn-expression.c +87 -87
- data/ext/groonga/rb-grn-fix-size-column.c +12 -12
- data/ext/groonga/rb-grn-geo-point.c +2 -2
- data/ext/groonga/rb-grn-hash.c +38 -38
- data/ext/groonga/rb-grn-index-column.c +191 -191
- data/ext/groonga/rb-grn-index-cursor.c +29 -29
- data/ext/groonga/rb-grn-logger.c +36 -36
- data/ext/groonga/rb-grn-normalizer.c +10 -10
- data/ext/groonga/rb-grn-patricia-trie.c +196 -196
- data/ext/groonga/rb-grn-plugin.c +5 -5
- data/ext/groonga/rb-grn-posting.c +2 -2
- data/ext/groonga/rb-grn-procedure.c +2 -2
- data/ext/groonga/rb-grn-query-logger.c +1 -1
- data/ext/groonga/rb-grn-record.c +1 -1
- data/ext/groonga/rb-grn-snippet.c +14 -14
- data/ext/groonga/rb-grn-table-cursor-key-support.c +4 -4
- data/ext/groonga/rb-grn-table-cursor.c +52 -52
- data/ext/groonga/rb-grn-table-key-support.c +209 -209
- data/ext/groonga/rb-grn-type.c +18 -18
- data/ext/groonga/rb-grn-utils.c +332 -314
- data/ext/groonga/rb-grn-variable-size-column.c +34 -34
- data/ext/groonga/rb-grn-variable.c +2 -2
- data/ext/groonga/rb-grn.h +240 -232
- data/ext/groonga/rb-groonga.c +10 -10
- data/lib/1.9/groonga.so +0 -0
- data/lib/2.0/groonga.so +0 -0
- data/rroonga-build.rb +7 -0
- data/rroonga.gemspec +1 -1
- data/test/test-hash.rb +4 -4
- data/test/test-index-column.rb +271 -257
- data/test/test-table-key-support.rb +78 -0
- data/test/test-table.rb +78 -51
- metadata +8 -3
data/ext/groonga/rb-grn-column.c
CHANGED
@@ -53,7 +53,7 @@ grn_obj *
|
|
53
53
|
rb_grn_column_from_ruby_object (VALUE object, grn_ctx **context)
|
54
54
|
{
|
55
55
|
if (!RVAL2CBOOL(rb_obj_is_kind_of(object, rb_cGrnColumn))) {
|
56
|
-
|
56
|
+
rb_raise(rb_eTypeError, "not a groonga column");
|
57
57
|
}
|
58
58
|
|
59
59
|
return RVAL2GRNOBJECT(object, context);
|
@@ -61,14 +61,14 @@ rb_grn_column_from_ruby_object (VALUE object, grn_ctx **context)
|
|
61
61
|
|
62
62
|
VALUE
|
63
63
|
rb_grn_column_to_ruby_object (VALUE klass, grn_ctx *context, grn_obj *column,
|
64
|
-
|
64
|
+
grn_bool owner)
|
65
65
|
{
|
66
66
|
return GRNOBJECT2RVAL(klass, context, column, owner);
|
67
67
|
}
|
68
68
|
|
69
69
|
void
|
70
70
|
rb_grn_column_bind (RbGrnColumn *rb_column,
|
71
|
-
|
71
|
+
grn_ctx *context, grn_obj *column)
|
72
72
|
{
|
73
73
|
RbGrnObject *rb_grn_object;
|
74
74
|
|
@@ -80,34 +80,34 @@ rb_grn_column_bind (RbGrnColumn *rb_column,
|
|
80
80
|
|
81
81
|
void
|
82
82
|
rb_grn_column_finalizer (grn_ctx *context, grn_obj *grn_object,
|
83
|
-
|
83
|
+
RbGrnColumn *rb_column)
|
84
84
|
{
|
85
85
|
rb_grn_named_object_finalizer(context, grn_object,
|
86
|
-
|
86
|
+
RB_GRN_NAMED_OBJECT(rb_column));
|
87
87
|
if (context && rb_column->value)
|
88
|
-
|
88
|
+
grn_obj_unlink(context, rb_column->value);
|
89
89
|
rb_column->value = NULL;
|
90
90
|
}
|
91
91
|
|
92
92
|
void
|
93
93
|
rb_grn_column_deconstruct (RbGrnColumn *rb_column,
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
94
|
+
grn_obj **column,
|
95
|
+
grn_ctx **context,
|
96
|
+
grn_id *domain_id,
|
97
|
+
grn_obj **domain,
|
98
|
+
grn_obj **value,
|
99
|
+
grn_id *range_id,
|
100
|
+
grn_obj **range)
|
101
101
|
{
|
102
102
|
RbGrnObject *rb_grn_object;
|
103
103
|
|
104
104
|
rb_grn_object = RB_GRN_OBJECT(rb_column);
|
105
105
|
rb_grn_object_deconstruct(rb_grn_object, column, context,
|
106
|
-
|
107
|
-
|
106
|
+
domain_id, domain,
|
107
|
+
range_id, range);
|
108
108
|
|
109
109
|
if (value)
|
110
|
-
|
110
|
+
*value = rb_column->value;
|
111
111
|
}
|
112
112
|
|
113
113
|
/*
|
@@ -124,8 +124,8 @@ rb_grn_column_get_table (VALUE self)
|
|
124
124
|
grn_obj *table;
|
125
125
|
|
126
126
|
rb_grn_object_deconstruct((RbGrnObject *)(SELF(self)), &column, &context,
|
127
|
-
|
128
|
-
|
127
|
+
NULL, NULL,
|
128
|
+
NULL, NULL);
|
129
129
|
table = grn_column_table(context, column);
|
130
130
|
rb_grn_context_check(context, self);
|
131
131
|
|
@@ -154,11 +154,11 @@ rb_grn_column_get_local_name (VALUE self)
|
|
154
154
|
|
155
155
|
rb_grn_column = SELF(self);
|
156
156
|
rb_grn_object_deconstruct(RB_GRN_OBJECT(rb_grn_column), &column, &context,
|
157
|
-
|
158
|
-
|
157
|
+
NULL, NULL,
|
158
|
+
NULL, NULL);
|
159
159
|
name_size = grn_column_name(context, column, NULL, 0);
|
160
160
|
if (name_size == 0)
|
161
|
-
|
161
|
+
return Qnil;
|
162
162
|
|
163
163
|
name = xmalloc(name_size);
|
164
164
|
grn_column_name(context, column, name, name_size);
|
@@ -317,8 +317,8 @@ rb_grn_column_select (int argc, VALUE *argv, VALUE self)
|
|
317
317
|
rb_scan_args(argc, argv, "02", &condition_or_options, &options);
|
318
318
|
|
319
319
|
rb_grn_column_deconstruct(SELF(self), &column, &context,
|
320
|
-
|
321
|
-
|
320
|
+
NULL, NULL,
|
321
|
+
NULL, NULL, NULL);
|
322
322
|
table = grn_column_table(context, column);
|
323
323
|
|
324
324
|
if (RVAL2CBOOL(rb_obj_is_kind_of(condition_or_options, rb_cString))) {
|
@@ -329,35 +329,35 @@ rb_grn_column_select (int argc, VALUE *argv, VALUE self)
|
|
329
329
|
} else {
|
330
330
|
if (!NIL_P(options))
|
331
331
|
rb_raise(rb_eArgError,
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
332
|
+
"should be [query_string, option_hash], "
|
333
|
+
"[expression, option_hash] "
|
334
|
+
"or [option_hash]: %s",
|
335
|
+
rb_grn_inspect(rb_ary_new4(argc, argv)));
|
336
336
|
options = condition_or_options;
|
337
337
|
}
|
338
338
|
|
339
339
|
rb_grn_scan_options(options,
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
|
340
|
+
"operator", &rb_operator,
|
341
|
+
"result", &rb_result,
|
342
|
+
"name", &rb_name,
|
343
|
+
"syntax", &rb_syntax,
|
344
|
+
"allow_pragma", &rb_allow_pragma,
|
345
|
+
"allow_column", &rb_allow_column,
|
346
|
+
"allow_update", &rb_allow_update,
|
347
|
+
"allow_leading_not", &rb_allow_leading_not,
|
348
|
+
NULL);
|
349
349
|
|
350
350
|
if (!NIL_P(rb_operator))
|
351
|
-
|
351
|
+
operator = NUM2INT(rb_operator);
|
352
352
|
|
353
353
|
if (NIL_P(rb_result)) {
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
354
|
+
result = grn_table_create(context, NULL, 0, NULL,
|
355
|
+
GRN_TABLE_HASH_KEY | GRN_OBJ_WITH_SUBREC,
|
356
|
+
table,
|
357
|
+
0);
|
358
|
+
rb_result = GRNTABLE2RVAL(context, result, GRN_TRUE);
|
359
359
|
} else {
|
360
|
-
|
360
|
+
result = RVAL2GRNTABLE(rb_result, &context);
|
361
361
|
}
|
362
362
|
|
363
363
|
if (NIL_P(rb_expression)) {
|
@@ -377,8 +377,8 @@ rb_grn_column_select (int argc, VALUE *argv, VALUE self)
|
|
377
377
|
rb_grn_context_check(context, self);
|
378
378
|
|
379
379
|
rb_attr(rb_singleton_class(rb_result),
|
380
|
-
|
381
|
-
|
380
|
+
rb_intern("expression"),
|
381
|
+
GRN_TRUE, GRN_FALSE, GRN_FALSE);
|
382
382
|
rb_iv_set(rb_result, "@expression", rb_expression);
|
383
383
|
|
384
384
|
return rb_result;
|
@@ -404,15 +404,15 @@ rb_grn_column_unlock (int argc, VALUE *argv, VALUE self)
|
|
404
404
|
rb_scan_args(argc, argv, "01", &options);
|
405
405
|
|
406
406
|
rb_grn_column_deconstruct(SELF(self), &column, &context,
|
407
|
-
|
408
|
-
|
407
|
+
NULL, NULL,
|
408
|
+
NULL, NULL, NULL);
|
409
409
|
|
410
410
|
rb_grn_scan_options(options,
|
411
|
-
|
412
|
-
|
411
|
+
"id", &rb_id,
|
412
|
+
NULL);
|
413
413
|
|
414
414
|
if (!NIL_P(rb_id))
|
415
|
-
|
415
|
+
id = NUM2UINT(rb_id);
|
416
416
|
|
417
417
|
rc = grn_obj_unlock(context, column, id);
|
418
418
|
rb_grn_context_check(context, self);
|
@@ -459,28 +459,28 @@ rb_grn_column_lock (int argc, VALUE *argv, VALUE self)
|
|
459
459
|
rb_scan_args(argc, argv, "01", &options);
|
460
460
|
|
461
461
|
rb_grn_column_deconstruct(SELF(self), &column, &context,
|
462
|
-
|
463
|
-
|
462
|
+
NULL, NULL,
|
463
|
+
NULL, NULL, NULL);
|
464
464
|
|
465
465
|
rb_grn_scan_options(options,
|
466
|
-
|
467
|
-
|
468
|
-
|
466
|
+
"timeout", &rb_timeout,
|
467
|
+
"id", &rb_id,
|
468
|
+
NULL);
|
469
469
|
|
470
470
|
if (!NIL_P(rb_timeout))
|
471
|
-
|
471
|
+
timeout = NUM2UINT(rb_timeout);
|
472
472
|
|
473
473
|
if (!NIL_P(rb_id))
|
474
|
-
|
474
|
+
id = NUM2UINT(rb_id);
|
475
475
|
|
476
476
|
rc = grn_obj_lock(context, column, id, timeout);
|
477
477
|
rb_grn_context_check(context, self);
|
478
478
|
rb_grn_rc_check(rc, self);
|
479
479
|
|
480
480
|
if (rb_block_given_p()) {
|
481
|
-
|
481
|
+
return rb_ensure(rb_yield, Qnil, rb_grn_column_unlock_ensure, self);
|
482
482
|
} else {
|
483
|
-
|
483
|
+
return Qnil;
|
484
484
|
}
|
485
485
|
}
|
486
486
|
|
@@ -505,15 +505,15 @@ rb_grn_column_clear_lock (int argc, VALUE *argv, VALUE self)
|
|
505
505
|
rb_scan_args(argc, argv, "01", &options);
|
506
506
|
|
507
507
|
rb_grn_column_deconstruct(SELF(self), &column, &context,
|
508
|
-
|
509
|
-
|
508
|
+
NULL, NULL,
|
509
|
+
NULL, NULL, NULL);
|
510
510
|
|
511
511
|
rb_grn_scan_options(options,
|
512
|
-
|
513
|
-
|
512
|
+
"id", &rb_id,
|
513
|
+
NULL);
|
514
514
|
|
515
515
|
if (!NIL_P(rb_id))
|
516
|
-
|
516
|
+
id = NUM2UINT(rb_id);
|
517
517
|
|
518
518
|
grn_obj_clear_lock(context, column);
|
519
519
|
|
@@ -541,15 +541,15 @@ rb_grn_column_is_locked (int argc, VALUE *argv, VALUE self)
|
|
541
541
|
rb_scan_args(argc, argv, "01", &options);
|
542
542
|
|
543
543
|
rb_grn_column_deconstruct(SELF(self), &column, &context,
|
544
|
-
|
545
|
-
|
544
|
+
NULL, NULL,
|
545
|
+
NULL, NULL, NULL);
|
546
546
|
|
547
547
|
rb_grn_scan_options(options,
|
548
|
-
|
549
|
-
|
548
|
+
"id", &rb_id,
|
549
|
+
NULL);
|
550
550
|
|
551
551
|
if (!NIL_P(rb_id))
|
552
|
-
|
552
|
+
id = NUM2UINT(rb_id);
|
553
553
|
|
554
554
|
return CBOOL2RVAL(grn_obj_is_locked(context, column));
|
555
555
|
}
|
@@ -572,8 +572,8 @@ rb_grn_column_reference_p (VALUE self)
|
|
572
572
|
unsigned short int type;
|
573
573
|
|
574
574
|
rb_grn_column_deconstruct(SELF(self), &column, &context,
|
575
|
-
|
576
|
-
|
575
|
+
NULL, NULL,
|
576
|
+
NULL, NULL, NULL);
|
577
577
|
|
578
578
|
range_id = grn_obj_get_range(context, column);
|
579
579
|
range = grn_ctx_at(context, range_id);
|
@@ -583,9 +583,9 @@ rb_grn_column_reference_p (VALUE self)
|
|
583
583
|
case GRN_TABLE_HASH_KEY:
|
584
584
|
case GRN_TABLE_PAT_KEY:
|
585
585
|
case GRN_TABLE_NO_KEY:
|
586
|
-
|
586
|
+
return Qtrue;
|
587
587
|
default:
|
588
|
-
|
588
|
+
return Qfalse;
|
589
589
|
}
|
590
590
|
}
|
591
591
|
|
@@ -604,13 +604,13 @@ rb_grn_column_index_p (VALUE self)
|
|
604
604
|
grn_obj *column;
|
605
605
|
|
606
606
|
rb_grn_column_deconstruct(SELF(self), &column, &context,
|
607
|
-
|
608
|
-
|
607
|
+
NULL, NULL,
|
608
|
+
NULL, NULL, NULL);
|
609
609
|
|
610
610
|
if (column->header.type == GRN_COLUMN_INDEX) {
|
611
|
-
|
611
|
+
return Qtrue;
|
612
612
|
} else {
|
613
|
-
|
613
|
+
return Qfalse;
|
614
614
|
}
|
615
615
|
}
|
616
616
|
|
@@ -629,15 +629,15 @@ rb_grn_column_vector_p (VALUE self)
|
|
629
629
|
grn_obj *column;
|
630
630
|
|
631
631
|
rb_grn_column_deconstruct(SELF(self), &column, &context,
|
632
|
-
|
633
|
-
|
632
|
+
NULL, NULL,
|
633
|
+
NULL, NULL, NULL);
|
634
634
|
|
635
635
|
if (column->header.type == GRN_COLUMN_VAR_SIZE &&
|
636
|
-
|
637
|
-
|
638
|
-
|
636
|
+
((column->header.flags & GRN_OBJ_COLUMN_TYPE_MASK) ==
|
637
|
+
GRN_OBJ_COLUMN_VECTOR)) {
|
638
|
+
return Qtrue;
|
639
639
|
} else {
|
640
|
-
|
640
|
+
return Qfalse;
|
641
641
|
}
|
642
642
|
}
|
643
643
|
|
@@ -656,21 +656,21 @@ rb_grn_column_scalar_p (VALUE self)
|
|
656
656
|
grn_obj *column;
|
657
657
|
|
658
658
|
rb_grn_column_deconstruct(SELF(self), &column, &context,
|
659
|
-
|
660
|
-
|
659
|
+
NULL, NULL,
|
660
|
+
NULL, NULL, NULL);
|
661
661
|
|
662
662
|
switch (column->header.type) {
|
663
663
|
case GRN_COLUMN_FIX_SIZE:
|
664
|
-
|
664
|
+
return Qtrue;
|
665
665
|
case GRN_COLUMN_VAR_SIZE:
|
666
|
-
|
667
|
-
|
668
|
-
|
669
|
-
|
670
|
-
|
671
|
-
|
666
|
+
if ((column->header.flags & GRN_OBJ_COLUMN_TYPE_MASK) ==
|
667
|
+
GRN_OBJ_COLUMN_SCALAR) {
|
668
|
+
return Qtrue;
|
669
|
+
} else {
|
670
|
+
return Qfalse;
|
671
|
+
}
|
672
672
|
default:
|
673
|
-
|
673
|
+
return Qfalse;
|
674
674
|
}
|
675
675
|
}
|
676
676
|
|
@@ -694,27 +694,27 @@ rb_grn_column_get_indexes (int argc, VALUE *argv, VALUE self)
|
|
694
694
|
rb_scan_args(argc, argv, "01", &rb_operator);
|
695
695
|
|
696
696
|
rb_grn_column_deconstruct(SELF(self), &column, &context,
|
697
|
-
|
698
|
-
|
697
|
+
NULL, NULL,
|
698
|
+
NULL, NULL, NULL);
|
699
699
|
|
700
700
|
if (!NIL_P(rb_operator)) {
|
701
|
-
|
701
|
+
operator = RVAL2GRNOPERATOR(rb_operator);
|
702
702
|
}
|
703
703
|
|
704
704
|
rb_indexes = rb_ary_new();
|
705
705
|
n_indexes = grn_column_index(context, column, operator,
|
706
|
-
|
706
|
+
NULL, 0, NULL);
|
707
707
|
if (n_indexes == 0)
|
708
|
-
|
708
|
+
return rb_indexes;
|
709
709
|
|
710
710
|
indexes = xmalloc(sizeof(grn_obj *) * n_indexes);
|
711
711
|
n_indexes = grn_column_index(context, column, operator,
|
712
|
-
|
712
|
+
indexes, n_indexes, NULL);
|
713
713
|
for (i = 0; i < n_indexes; i++) {
|
714
|
-
|
715
|
-
|
716
|
-
|
717
|
-
|
714
|
+
VALUE rb_index;
|
715
|
+
rb_index = GRNOBJECT2RVAL(Qnil, context, indexes[i], GRN_FALSE);
|
716
|
+
rb_ary_push(rb_indexes, rb_index);
|
717
|
+
grn_obj_unlink(context, indexes[i]);
|
718
718
|
}
|
719
719
|
xfree(indexes);
|
720
720
|
return rb_indexes;
|
@@ -736,8 +736,8 @@ rb_grn_column_rename (VALUE self, VALUE rb_name)
|
|
736
736
|
int name_size;
|
737
737
|
|
738
738
|
rb_grn_column_deconstruct(SELF(self), &column, &context,
|
739
|
-
|
740
|
-
|
739
|
+
NULL, NULL,
|
740
|
+
NULL, NULL, NULL);
|
741
741
|
|
742
742
|
name = StringValueCStr(rb_name);
|
743
743
|
name_size = RSTRING_LEN(rb_name);
|
@@ -756,7 +756,7 @@ rb_grn_init_column (VALUE mGrn)
|
|
756
756
|
|
757
757
|
rb_define_method(rb_cGrnColumn, "table", rb_grn_column_get_table, 0);
|
758
758
|
rb_define_method(rb_cGrnColumn, "local_name",
|
759
|
-
|
759
|
+
rb_grn_column_get_local_name, 0);
|
760
760
|
|
761
761
|
rb_define_method(rb_cGrnColumn, "select", rb_grn_column_select, -1);
|
762
762
|
rb_define_method(rb_cGrnColumn, "lock", rb_grn_column_lock, -1);
|
@@ -49,15 +49,15 @@ rb_grn_context_from_ruby_object (VALUE object)
|
|
49
49
|
RbGrnContext *rb_grn_context;
|
50
50
|
|
51
51
|
if (!RVAL2CBOOL(rb_obj_is_kind_of(object, cGrnContext))) {
|
52
|
-
|
52
|
+
rb_raise(rb_eTypeError, "not a groonga context");
|
53
53
|
}
|
54
54
|
|
55
55
|
Data_Get_Struct(object, RbGrnContext, rb_grn_context);
|
56
56
|
if (!rb_grn_context)
|
57
|
-
|
57
|
+
rb_raise(rb_eGrnError, "groonga context is NULL");
|
58
58
|
if (!rb_grn_context->context)
|
59
|
-
|
60
|
-
|
59
|
+
rb_raise(rb_eGrnClosed,
|
60
|
+
"can't access already closed groonga context");
|
61
61
|
return rb_grn_context->context;
|
62
62
|
}
|
63
63
|
|
@@ -72,12 +72,12 @@ rb_grn_context_register_floating_object (RbGrnObject *rb_grn_object)
|
|
72
72
|
context = rb_grn_context->context;
|
73
73
|
floating_objects = rb_grn_context->floating_objects;
|
74
74
|
if (!floating_objects) {
|
75
|
-
|
76
|
-
|
75
|
+
rb_grn_context_reset_floating_objects(rb_grn_context);
|
76
|
+
floating_objects = rb_grn_context->floating_objects;
|
77
77
|
}
|
78
78
|
grn_hash_add(context, floating_objects,
|
79
|
-
|
80
|
-
|
79
|
+
(const void *)(&rb_grn_object), sizeof(RbGrnObject *),
|
80
|
+
NULL, NULL);
|
81
81
|
rb_grn_object->floating = GRN_TRUE;
|
82
82
|
}
|
83
83
|
|
@@ -89,17 +89,17 @@ rb_grn_context_unregister_floating_object (RbGrnObject *rb_grn_object)
|
|
89
89
|
grn_hash *floating_objects;
|
90
90
|
|
91
91
|
if (!rb_grn_object->floating)
|
92
|
-
|
92
|
+
return;
|
93
93
|
|
94
94
|
rb_grn_context = rb_grn_object->rb_grn_context;
|
95
95
|
if (!rb_grn_context)
|
96
|
-
|
96
|
+
return;
|
97
97
|
|
98
98
|
context = rb_grn_context->context;
|
99
99
|
floating_objects = rb_grn_context->floating_objects;
|
100
100
|
grn_hash_delete(context, floating_objects,
|
101
|
-
|
102
|
-
|
101
|
+
(const void *)&rb_grn_object, sizeof(RbGrnObject *),
|
102
|
+
NULL);
|
103
103
|
rb_grn_object->floating = GRN_FALSE;
|
104
104
|
}
|
105
105
|
|
@@ -113,13 +113,13 @@ rb_grn_context_close_floating_objects (RbGrnContext *rb_grn_context)
|
|
113
113
|
context = rb_grn_context->context;
|
114
114
|
floating_objects = rb_grn_context->floating_objects;
|
115
115
|
if (!floating_objects)
|
116
|
-
|
116
|
+
return;
|
117
117
|
|
118
118
|
rb_grn_context->floating_objects = NULL;
|
119
119
|
GRN_HASH_EACH(context, floating_objects, id, &floating_object, NULL, NULL, {
|
120
|
-
|
121
|
-
|
122
|
-
|
120
|
+
(*floating_object)->floating = GRN_FALSE;
|
121
|
+
grn_obj_close(context, RB_GRN_OBJECT(*floating_object)->object);
|
122
|
+
});
|
123
123
|
grn_hash_close(context, floating_objects);
|
124
124
|
}
|
125
125
|
|
@@ -131,9 +131,9 @@ rb_grn_context_reset_floating_objects (RbGrnContext *rb_grn_context)
|
|
131
131
|
rb_grn_context_close_floating_objects(rb_grn_context);
|
132
132
|
context = rb_grn_context->context;
|
133
133
|
rb_grn_context->floating_objects = grn_hash_create(context, NULL,
|
134
|
-
|
135
|
-
|
136
|
-
|
134
|
+
sizeof(RbGrnObject *),
|
135
|
+
0,
|
136
|
+
GRN_OBJ_TABLE_HASH_KEY);
|
137
137
|
}
|
138
138
|
|
139
139
|
void
|
@@ -145,15 +145,15 @@ rb_grn_context_mark_grn_id (grn_ctx *context, grn_id id)
|
|
145
145
|
|
146
146
|
object = grn_ctx_at(context, id);
|
147
147
|
if (!object)
|
148
|
-
|
148
|
+
return;
|
149
149
|
|
150
150
|
user_data = grn_obj_user_data(context, object);
|
151
151
|
if (!user_data)
|
152
|
-
|
152
|
+
return;
|
153
153
|
|
154
154
|
rb_grn_object = RB_GRN_OBJECT(user_data->ptr);
|
155
155
|
if (!rb_grn_object)
|
156
|
-
|
156
|
+
return;
|
157
157
|
|
158
158
|
rb_gc_mark(rb_grn_object->self);
|
159
159
|
}
|
@@ -176,10 +176,10 @@ static void
|
|
176
176
|
rb_grn_context_fin (grn_ctx *context)
|
177
177
|
{
|
178
178
|
if (context->stat == GRN_CTX_FIN)
|
179
|
-
|
179
|
+
return;
|
180
180
|
|
181
181
|
if (!(context->flags & GRN_CTX_PER_DB)) {
|
182
|
-
|
182
|
+
rb_grn_context_unlink_database(context);
|
183
183
|
}
|
184
184
|
grn_ctx_fin(context);
|
185
185
|
}
|
@@ -194,7 +194,7 @@ rb_grn_context_free (void *pointer)
|
|
194
194
|
debug("context-free: %p\n", context);
|
195
195
|
rb_grn_context_close_floating_objects(rb_grn_context);
|
196
196
|
if (context && !rb_grn_exited)
|
197
|
-
|
197
|
+
rb_grn_context_fin(context);
|
198
198
|
debug("context-free: %p: done\n", context);
|
199
199
|
xfree(rb_grn_context);
|
200
200
|
}
|
@@ -207,30 +207,30 @@ rb_grn_context_alloc (VALUE klass)
|
|
207
207
|
|
208
208
|
static grn_obj *
|
209
209
|
rb_grn_context_finalizer (grn_ctx *context, int n_args, grn_obj **grn_objects,
|
210
|
-
|
210
|
+
grn_user_data *user_data)
|
211
211
|
{
|
212
212
|
RbGrnContext *rb_grn_context;
|
213
213
|
|
214
214
|
if (rb_grn_exited)
|
215
|
-
|
215
|
+
return NULL;
|
216
216
|
|
217
217
|
rb_grn_context = user_data->ptr;
|
218
218
|
|
219
219
|
rb_grn_context_close_floating_objects(rb_grn_context);
|
220
220
|
if (!(context->flags & GRN_CTX_PER_DB)) {
|
221
|
-
|
221
|
+
rb_grn_context_unlink_database(context);
|
222
222
|
}
|
223
223
|
|
224
224
|
GRN_CTX_USER_DATA(context)->ptr = NULL;
|
225
225
|
grn_ctx_set_finalizer(context, NULL);
|
226
226
|
|
227
227
|
debug("context-finalize: %p:%p:%p\n",
|
228
|
-
|
228
|
+
context, rb_grn_context, rb_grn_context->context);
|
229
229
|
|
230
230
|
rb_grn_context->context = NULL;
|
231
231
|
|
232
232
|
debug("context-finalize: %p:%p:%p: done\n",
|
233
|
-
|
233
|
+
context, rb_grn_context, rb_grn_context->context);
|
234
234
|
|
235
235
|
return NULL;
|
236
236
|
}
|
@@ -243,7 +243,7 @@ rb_grn_context_to_exception (grn_ctx *context, VALUE related_object)
|
|
243
243
|
grn_obj bulk;
|
244
244
|
|
245
245
|
if (context->rc == GRN_SUCCESS)
|
246
|
-
|
246
|
+
return Qnil;
|
247
247
|
|
248
248
|
exception_class = rb_grn_rc_to_exception(context->rc);
|
249
249
|
message = rb_grn_rc_to_message(context->rc);
|
@@ -255,8 +255,8 @@ rb_grn_context_to_exception (grn_ctx *context, VALUE related_object)
|
|
255
255
|
GRN_TEXT_PUTS(context, &bulk, context->errbuf);
|
256
256
|
}
|
257
257
|
if (!NIL_P(related_object)) {
|
258
|
-
|
259
|
-
|
258
|
+
GRN_TEXT_PUTS(context, &bulk, ": ");
|
259
|
+
GRN_TEXT_PUTS(context, &bulk, rb_grn_inspect(related_object));
|
260
260
|
}
|
261
261
|
if (context->errline > 0) {
|
262
262
|
GRN_TEXT_PUTS(context, &bulk, "\n");
|
@@ -268,8 +268,8 @@ rb_grn_context_to_exception (grn_ctx *context, VALUE related_object)
|
|
268
268
|
GRN_TEXT_PUTS(context, &bulk, "()");
|
269
269
|
}
|
270
270
|
exception = rb_funcall(exception_class, rb_intern("new"), 1,
|
271
|
-
|
272
|
-
|
271
|
+
rb_str_new(GRN_BULK_HEAD(&bulk),
|
272
|
+
GRN_BULK_VSIZE(&bulk)));
|
273
273
|
grn_obj_unlink(context, &bulk);
|
274
274
|
|
275
275
|
return exception;
|
@@ -282,7 +282,7 @@ rb_grn_context_check (grn_ctx *context, VALUE related_object)
|
|
282
282
|
|
283
283
|
exception = rb_grn_context_to_exception(context, related_object);
|
284
284
|
if (NIL_P(exception))
|
285
|
-
|
285
|
+
return;
|
286
286
|
|
287
287
|
rb_exc_raise(exception);
|
288
288
|
}
|
@@ -291,7 +291,7 @@ grn_ctx *
|
|
291
291
|
rb_grn_context_ensure (VALUE *context)
|
292
292
|
{
|
293
293
|
if (NIL_P(*context))
|
294
|
-
|
294
|
+
*context = rb_grn_context_get_default();
|
295
295
|
return SELF(*context);
|
296
296
|
}
|
297
297
|
|
@@ -299,10 +299,10 @@ VALUE
|
|
299
299
|
rb_grn_context_rb_string_new (grn_ctx *context, const char *string, long length)
|
300
300
|
{
|
301
301
|
if (length < 0)
|
302
|
-
|
302
|
+
length = strlen(string);
|
303
303
|
#ifdef HAVE_RUBY_ENCODING_H
|
304
304
|
return rb_enc_str_new(string, length,
|
305
|
-
|
305
|
+
rb_grn_encoding_to_ruby_encoding(context->encoding));
|
306
306
|
#else
|
307
307
|
return rb_str_new(string, length);
|
308
308
|
#endif
|
@@ -318,25 +318,25 @@ rb_grn_context_rb_string_encode (grn_ctx *context, VALUE rb_string)
|
|
318
318
|
|
319
319
|
context_encoding = context->encoding;
|
320
320
|
if (context->encoding == GRN_ENC_DEFAULT)
|
321
|
-
|
321
|
+
context->encoding = grn_get_default_encoding();
|
322
322
|
if (context->encoding == GRN_ENC_NONE)
|
323
|
-
|
323
|
+
return rb_string;
|
324
324
|
|
325
325
|
if (RSTRING_LEN(rb_string) < 0)
|
326
|
-
|
326
|
+
return rb_string;
|
327
327
|
|
328
328
|
encoding = rb_enc_get(rb_string);
|
329
329
|
to_encoding = rb_grn_encoding_to_ruby_encoding(context_encoding);
|
330
330
|
index = rb_enc_to_index(encoding);
|
331
331
|
to_index = rb_enc_to_index(to_encoding);
|
332
332
|
if (index == to_index)
|
333
|
-
|
333
|
+
return rb_string;
|
334
334
|
|
335
335
|
if (rb_enc_asciicompat(to_encoding) && rb_enc_str_asciionly_p(rb_string))
|
336
|
-
|
336
|
+
return rb_string;
|
337
337
|
|
338
338
|
rb_string = rb_str_encode(rb_string, rb_enc_from_encoding(to_encoding),
|
339
|
-
|
339
|
+
0, Qnil);
|
340
340
|
#endif
|
341
341
|
return rb_string;
|
342
342
|
}
|
@@ -366,8 +366,8 @@ rb_grn_context_s_get_default (VALUE self)
|
|
366
366
|
|
367
367
|
context = rb_cv_get(self, "@@default");
|
368
368
|
if (NIL_P(context)) {
|
369
|
-
|
370
|
-
|
369
|
+
context = rb_funcall(cGrnContext, rb_intern("new"), 0);
|
370
|
+
rb_cv_set(self, "@@default", context);
|
371
371
|
}
|
372
372
|
return context;
|
373
373
|
}
|
@@ -441,15 +441,15 @@ rb_grn_context_initialize (int argc, VALUE *argv, VALUE self)
|
|
441
441
|
rb_scan_args(argc, argv, "01", &options);
|
442
442
|
default_options = rb_grn_context_s_get_default_options(rb_obj_class(self));
|
443
443
|
if (NIL_P(default_options))
|
444
|
-
|
444
|
+
default_options = rb_hash_new();
|
445
445
|
|
446
446
|
if (NIL_P(options))
|
447
|
-
|
447
|
+
options = rb_hash_new();
|
448
448
|
options = rb_funcall(default_options, rb_intern("merge"), 1, options);
|
449
449
|
|
450
450
|
rb_grn_scan_options(options,
|
451
|
-
|
452
|
-
|
451
|
+
"encoding", &rb_encoding,
|
452
|
+
NULL);
|
453
453
|
|
454
454
|
rb_grn_context = ALLOC(RbGrnContext);
|
455
455
|
DATA_PTR(self) = rb_grn_context;
|
@@ -464,10 +464,10 @@ rb_grn_context_initialize (int argc, VALUE *argv, VALUE self)
|
|
464
464
|
grn_ctx_set_finalizer(context, rb_grn_context_finalizer);
|
465
465
|
|
466
466
|
if (!NIL_P(rb_encoding)) {
|
467
|
-
|
467
|
+
grn_encoding encoding;
|
468
468
|
|
469
|
-
|
470
|
-
|
469
|
+
encoding = RVAL2GRNENCODING(rb_encoding, NULL);
|
470
|
+
GRN_CTX_SET_ENCODING(context, encoding);
|
471
471
|
}
|
472
472
|
|
473
473
|
rb_iv_set(self, "@memory_pools", rb_ary_new());
|
@@ -492,10 +492,10 @@ rb_grn_context_close (VALUE self)
|
|
492
492
|
|
493
493
|
context = SELF(self);
|
494
494
|
if (context) {
|
495
|
-
|
496
|
-
|
497
|
-
|
498
|
-
|
495
|
+
rc = grn_ctx_fin(context);
|
496
|
+
Data_Get_Struct(self, RbGrnContext, rb_grn_context);
|
497
|
+
rb_grn_context->context = NULL;
|
498
|
+
rb_grn_rc_check(rc, self);
|
499
499
|
}
|
500
500
|
|
501
501
|
return Qnil;
|
@@ -727,22 +727,22 @@ rb_grn_context_connect (int argc, VALUE *argv, VALUE self)
|
|
727
727
|
|
728
728
|
rb_scan_args(argc, argv, "01", &options);
|
729
729
|
rb_grn_scan_options(options,
|
730
|
-
|
731
|
-
|
732
|
-
|
730
|
+
"host", &rb_host,
|
731
|
+
"port", &rb_port,
|
732
|
+
NULL);
|
733
733
|
|
734
734
|
context = SELF(self);
|
735
735
|
|
736
736
|
if (NIL_P(rb_host)) {
|
737
|
-
|
737
|
+
host = "localhost";
|
738
738
|
} else {
|
739
|
-
|
739
|
+
host = StringValueCStr(rb_host);
|
740
740
|
}
|
741
741
|
|
742
742
|
if (NIL_P(rb_port)) {
|
743
|
-
|
743
|
+
port = 10041;
|
744
744
|
} else {
|
745
|
-
|
745
|
+
port = NUM2INT(rb_port);
|
746
746
|
}
|
747
747
|
|
748
748
|
rc = grn_ctx_connect(context, host, port, flags);
|
@@ -794,9 +794,9 @@ rb_grn_context_receive (VALUE self)
|
|
794
794
|
context = SELF(self);
|
795
795
|
query_id = grn_ctx_recv(context, &result, &result_size, &flags);
|
796
796
|
if (result) {
|
797
|
-
|
797
|
+
rb_result = rb_str_new(result, result_size);
|
798
798
|
} else {
|
799
|
-
|
799
|
+
rb_result = Qnil;
|
800
800
|
}
|
801
801
|
rb_grn_context_check(context, self);
|
802
802
|
|
@@ -809,38 +809,38 @@ grn_type_name_old_to_new (const char *name, unsigned int name_size)
|
|
809
809
|
unsigned int i;
|
810
810
|
|
811
811
|
for (i = 0; i < name_size; i++) {
|
812
|
-
|
813
|
-
|
812
|
+
if (name[i] == '\0')
|
813
|
+
return NULL;
|
814
814
|
}
|
815
815
|
|
816
816
|
if (strcmp(name, "<int>") == 0) {
|
817
|
-
|
817
|
+
return "Int32";
|
818
818
|
} else if (strcmp(name, "<uint>") == 0) {
|
819
|
-
|
819
|
+
return "UInt32";
|
820
820
|
} else if (strcmp(name, "<int64>") == 0) {
|
821
|
-
|
821
|
+
return "Int64";
|
822
822
|
} else if (strcmp(name, "<uint64>") == 0) {
|
823
|
-
|
823
|
+
return "UInt64";
|
824
824
|
} else if (strcmp(name, "<float>") == 0) {
|
825
|
-
|
825
|
+
return "Float";
|
826
826
|
} else if (strcmp(name, "<time>") == 0) {
|
827
|
-
|
827
|
+
return "Time";
|
828
828
|
} else if (strcmp(name, "<shorttext>") == 0) {
|
829
|
-
|
829
|
+
return "ShortText";
|
830
830
|
} else if (strcmp(name, "<text>") == 0) {
|
831
|
-
|
831
|
+
return "Text";
|
832
832
|
} else if (strcmp(name, "<longtext>") == 0) {
|
833
|
-
|
833
|
+
return "LongText";
|
834
834
|
} else if (strcmp(name, "<token:delimit>") == 0) {
|
835
|
-
|
835
|
+
return "TokenDelimit";
|
836
836
|
} else if (strcmp(name, "<token:unigram>") == 0) {
|
837
|
-
|
837
|
+
return "TokenUnigram";
|
838
838
|
} else if (strcmp(name, "<token:bigram>") == 0) {
|
839
|
-
|
839
|
+
return "TokenBigram";
|
840
840
|
} else if (strcmp(name, "<token:trigram>") == 0) {
|
841
|
-
|
841
|
+
return "TokenTrigram";
|
842
842
|
} else if (strcmp(name, "<token:mecab>") == 0) {
|
843
|
-
|
843
|
+
return "TokenMecab";
|
844
844
|
}
|
845
845
|
|
846
846
|
return NULL;
|
@@ -848,26 +848,26 @@ grn_type_name_old_to_new (const char *name, unsigned int name_size)
|
|
848
848
|
|
849
849
|
grn_obj *
|
850
850
|
rb_grn_context_get_backward_compatibility (grn_ctx *context,
|
851
|
-
|
852
|
-
|
851
|
+
const char *name,
|
852
|
+
unsigned int name_size)
|
853
853
|
{
|
854
854
|
grn_obj *object;
|
855
855
|
|
856
856
|
object = grn_ctx_get(context, name, name_size);
|
857
857
|
if (!object) {
|
858
|
-
|
858
|
+
const char *new_type_name;
|
859
859
|
|
860
|
-
|
861
|
-
|
862
|
-
|
860
|
+
new_type_name = grn_type_name_old_to_new(name, name_size);
|
861
|
+
if (new_type_name) {
|
862
|
+
object = grn_ctx_get(context, new_type_name, strlen(new_type_name));
|
863
863
|
#if 0
|
864
|
-
|
865
|
-
|
866
|
-
|
867
|
-
|
868
|
-
|
864
|
+
if (object) {
|
865
|
+
rb_warn("deprecated old data type name <%s> is used. "
|
866
|
+
"Use new data type name <%s> instead.",
|
867
|
+
name, new_type_name);
|
868
|
+
}
|
869
869
|
#endif
|
870
|
-
|
870
|
+
}
|
871
871
|
}
|
872
872
|
|
873
873
|
return object;
|
@@ -900,26 +900,26 @@ rb_grn_context_array_reference (VALUE self, VALUE name_or_id)
|
|
900
900
|
context = SELF(self);
|
901
901
|
switch (TYPE(name_or_id)) {
|
902
902
|
case T_SYMBOL:
|
903
|
-
|
904
|
-
|
905
|
-
|
906
|
-
|
907
|
-
|
903
|
+
name = rb_id2name(SYM2ID(name_or_id));
|
904
|
+
name_size = strlen(name);
|
905
|
+
object = rb_grn_context_get_backward_compatibility(context,
|
906
|
+
name, name_size);
|
907
|
+
break;
|
908
908
|
case T_STRING:
|
909
|
-
|
910
|
-
|
911
|
-
|
912
|
-
|
913
|
-
|
909
|
+
name = StringValuePtr(name_or_id);
|
910
|
+
name_size = RSTRING_LEN(name_or_id);
|
911
|
+
object = rb_grn_context_get_backward_compatibility(context,
|
912
|
+
name, name_size);
|
913
|
+
break;
|
914
914
|
case T_FIXNUM:
|
915
|
-
|
916
|
-
|
917
|
-
|
915
|
+
id = NUM2UINT(name_or_id);
|
916
|
+
object = grn_ctx_at(context, id);
|
917
|
+
break;
|
918
918
|
default:
|
919
|
-
|
920
|
-
|
921
|
-
|
922
|
-
|
919
|
+
rb_raise(rb_eArgError,
|
920
|
+
"should be String, Symbol or unsigned integer: %s",
|
921
|
+
rb_grn_inspect(name_or_id));
|
922
|
+
break;
|
923
923
|
}
|
924
924
|
rb_grn_context_check(context, name_or_id);
|
925
925
|
|
@@ -944,13 +944,13 @@ rb_grn_init_context (VALUE mGrn)
|
|
944
944
|
rb_cv_set(cGrnContext, "@@default_options", Qnil);
|
945
945
|
|
946
946
|
rb_define_singleton_method(cGrnContext, "default",
|
947
|
-
|
947
|
+
rb_grn_context_s_get_default, 0);
|
948
948
|
rb_define_singleton_method(cGrnContext, "default=",
|
949
|
-
|
949
|
+
rb_grn_context_s_set_default, 1);
|
950
950
|
rb_define_singleton_method(cGrnContext, "default_options",
|
951
|
-
|
951
|
+
rb_grn_context_s_get_default_options, 0);
|
952
952
|
rb_define_singleton_method(cGrnContext, "default_options=",
|
953
|
-
|
953
|
+
rb_grn_context_s_set_default_options, 1);
|
954
954
|
|
955
955
|
rb_define_method(cGrnContext, "initialize", rb_grn_context_initialize, -1);
|
956
956
|
|
@@ -962,16 +962,16 @@ rb_grn_init_context (VALUE mGrn)
|
|
962
962
|
rb_define_method(cGrnContext, "encoding", rb_grn_context_get_encoding, 0);
|
963
963
|
rb_define_method(cGrnContext, "encoding=", rb_grn_context_set_encoding, 1);
|
964
964
|
rb_define_method(cGrnContext, "ruby_encoding",
|
965
|
-
|
965
|
+
rb_grn_context_get_ruby_encoding, 0);
|
966
966
|
rb_define_method(cGrnContext, "match_escalation_threshold",
|
967
|
-
|
967
|
+
rb_grn_context_get_match_escalation_threshold, 0);
|
968
968
|
rb_define_method(cGrnContext, "match_escalation_threshold=",
|
969
|
-
|
969
|
+
rb_grn_context_set_match_escalation_threshold, 1);
|
970
970
|
|
971
971
|
rb_define_method(cGrnContext, "support_zlib?",
|
972
|
-
|
972
|
+
rb_grn_context_support_zlib_p, 0);
|
973
973
|
rb_define_method(cGrnContext, "support_lzo?",
|
974
|
-
|
974
|
+
rb_grn_context_support_lzo_p, 0);
|
975
975
|
|
976
976
|
rb_define_method(cGrnContext, "database", rb_grn_context_get_database, 0);
|
977
977
|
|