couchbase 1.2.3-x86-mingw32 → 1.3.0-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.
@@ -17,8 +17,6 @@
17
17
 
18
18
  #include "couchbase_ext.h"
19
19
 
20
- /* TOUCH */
21
-
22
20
  #define _alloc_data_for_s(type, _type, size, items, ptr) do {\
23
21
  lcb_size_t ii; \
24
22
  \
@@ -45,6 +43,40 @@
45
43
 
46
44
  #define _release_data_for(type) _release_data_for_s(type, items, ptr)
47
45
 
46
+ static VALUE
47
+ get_transcoder(struct cb_bucket_st *bucket, VALUE override, int compat, VALUE opts)
48
+ {
49
+ VALUE ret = Qundef;
50
+
51
+ /* override with symbol */
52
+ if (TYPE(override) == T_SYMBOL) {
53
+ if (override == cb_sym_document) {
54
+ ret = cb_mDocument;
55
+ } else if (override == cb_sym_marshal) {
56
+ ret = cb_mMarshal;
57
+ } else if (override == cb_sym_plain) {
58
+ ret = cb_mPlain;
59
+ }
60
+ } else if (!compat) {
61
+ /* override with transcoder */
62
+ if (rb_respond_to(override, cb_id_dump)
63
+ && rb_respond_to(override, cb_id_load)) {
64
+ ret = override;
65
+ }
66
+ /* nil is also valid */
67
+ if (NIL_P(override)) {
68
+ ret = Qnil;
69
+ }
70
+ }
71
+ if (ret == Qundef) {
72
+ return bucket->transcoder;
73
+ } else {
74
+ rb_hash_aset(opts, cb_sym_forced, Qtrue);
75
+ return ret;
76
+ }
77
+ }
78
+
79
+ /* TOUCH */
48
80
 
49
81
  static void
50
82
  cb_params_touch_alloc(struct cb_params_st *params, lcb_size_t size)
@@ -227,11 +259,11 @@ cb_params_store_init_item(struct cb_params_st *params, lcb_size_t idx,
227
259
  lcb_time_t exptime)
228
260
  {
229
261
  key_obj = cb_unify_key(params->bucket, key_obj, 1);
230
- value_obj = cb_encode_value(value_obj, params->cmd.store.flags);
262
+ value_obj = cb_encode_value(params->cmd.store.transcoder, value_obj, &flags, params->cmd.store.transcoder_opts);
231
263
  if (rb_obj_is_kind_of(value_obj, rb_eStandardError)) {
232
264
  VALUE exc_str = rb_funcall(value_obj, cb_id_to_s, 0);
233
265
  VALUE msg = rb_funcall(rb_mKernel, cb_id_sprintf, 3,
234
- rb_str_new2("unable to convert value for key '%s': %s"), key_obj, exc_str);
266
+ rb_str_new2("unable to convert value for key \"%s\": %s"), key_obj, exc_str);
235
267
  VALUE exc = rb_exc_new3(cb_eValueFormatError, msg);
236
268
  rb_ivar_set(exc, cb_id_iv_inner_exception, value_obj);
237
269
  rb_exc_raise(exc);
@@ -239,7 +271,7 @@ cb_params_store_init_item(struct cb_params_st *params, lcb_size_t idx,
239
271
  /* the value must be string after conversion */
240
272
  if (TYPE(value_obj) != T_STRING) {
241
273
  VALUE val = rb_any_to_s(value_obj);
242
- rb_raise(cb_eValueFormatError, "unable to convert value for key '%s' to string: %s", RSTRING_PTR(key_obj), RSTRING_PTR(val));
274
+ rb_raise(cb_eValueFormatError, "unable to convert value for key \"%s\" to string: %s", RSTRING_PTR(key_obj), RSTRING_PTR(val));
243
275
  }
244
276
  rb_ary_push(params->ensurance, key_obj);
245
277
  rb_ary_push(params->ensurance, value_obj);
@@ -276,10 +308,6 @@ cb_params_store_parse_options(struct cb_params_st *params, VALUE options)
276
308
  if (tmp != Qnil) {
277
309
  params->cmd.store.flags = (lcb_uint32_t)NUM2ULONG(tmp);
278
310
  }
279
- tmp = rb_hash_aref(options, cb_sym_format);
280
- if (tmp != Qnil) { /* rewrite format bits */
281
- params->cmd.store.flags = cb_flags_set_format(params->cmd.store.flags, tmp);
282
- }
283
311
  tmp = rb_hash_aref(options, cb_sym_ttl);
284
312
  if (tmp != Qnil) {
285
313
  params->cmd.store.ttl = NUM2ULONG(tmp);
@@ -294,9 +322,15 @@ cb_params_store_parse_options(struct cb_params_st *params, VALUE options)
294
322
  rb_funcall(params->bucket->self, cb_id_verify_observe_options, 1, tmp);
295
323
  params->cmd.store.observe = tmp;
296
324
  }
297
- if (cb_flags_get_format(params->cmd.store.flags) == cb_sym_document) {
298
- /* just amend datatype for now */
299
- params->cmd.store.datatype = 0x01;
325
+ tmp = rb_hash_aref(options, cb_sym_format);
326
+ if (tmp != Qnil) {
327
+ params->cmd.store.transcoder = get_transcoder(params->bucket,
328
+ tmp, 1, params->cmd.store.transcoder_opts);
329
+ }
330
+ tmp = rb_hash_lookup2(options, cb_sym_transcoder, Qundef);
331
+ if (tmp != Qundef) {
332
+ params->cmd.store.transcoder = get_transcoder(params->bucket,
333
+ tmp, 0, params->cmd.store.transcoder_opts);
300
334
  }
301
335
  }
302
336
 
@@ -391,8 +425,13 @@ cb_params_get_parse_options(struct cb_params_st *params, VALUE options)
391
425
  }
392
426
  tmp = rb_hash_aref(options, cb_sym_format);
393
427
  if (tmp != Qnil) {
394
- Check_Type(tmp, T_SYMBOL);
395
- params->cmd.get.forced_format = tmp;
428
+ params->cmd.get.transcoder = get_transcoder(params->bucket,
429
+ tmp, 1, params->cmd.get.transcoder_opts);
430
+ }
431
+ tmp = rb_hash_lookup2(options, cb_sym_transcoder, Qundef);
432
+ if (tmp != Qundef) {
433
+ params->cmd.get.transcoder = get_transcoder(params->bucket,
434
+ tmp, 0, params->cmd.get.transcoder_opts);
396
435
  }
397
436
  tmp = rb_hash_aref(options, cb_sym_ttl);
398
437
  if (tmp != Qnil) {
@@ -511,12 +550,14 @@ cb_params_arith_parse_options(struct cb_params_st *params, VALUE options)
511
550
  params->cmd.arith.delta = NUM2ULL(tmp) & INT64_MAX;
512
551
  }
513
552
  tmp = rb_hash_aref(options, cb_sym_format);
514
- if (tmp != Qnil) { /* rewrite format bits */
515
- params->cmd.arith.format = tmp;
553
+ if (tmp != Qnil) {
554
+ params->cmd.arith.transcoder = get_transcoder(params->bucket,
555
+ tmp, 1, params->cmd.arith.transcoder_opts);
516
556
  }
517
- if (params->cmd.arith.format == cb_sym_document) {
518
- /* just amend datatype for now */
519
- params->cmd.arith.datatype = 0x01;
557
+ tmp = rb_hash_lookup2(options, cb_sym_transcoder, Qundef);
558
+ if (tmp != Qundef) {
559
+ params->cmd.arith.transcoder = get_transcoder(params->bucket,
560
+ tmp, 0, params->cmd.arith.transcoder_opts);
520
561
  }
521
562
  }
522
563
 
@@ -824,22 +865,26 @@ do_params_build(VALUE ptr)
824
865
  }
825
866
  params->cmd.store.datatype = 0x00;
826
867
  params->cmd.store.ttl = params->bucket->default_ttl;
827
- params->cmd.store.flags = cb_flags_set_format(params->bucket->default_flags,
828
- params->bucket->default_format);
868
+ params->cmd.store.flags = params->bucket->default_flags;
829
869
  params->cmd.store.observe = Qnil;
870
+ params->cmd.store.transcoder = params->bucket->transcoder;
871
+ params->cmd.store.transcoder_opts = rb_hash_new();
830
872
  cb_params_store_parse_options(params, opts);
831
873
  cb_params_store_parse_arguments(params, argc, argv);
832
874
  break;
833
875
  case cb_cmd_get:
834
876
  params->cmd.get.quiet = params->bucket->quiet;
877
+ params->cmd.get.transcoder = params->bucket->transcoder;
878
+ params->cmd.get.transcoder_opts = rb_hash_new();
835
879
  cb_params_get_parse_options(params, opts);
836
880
  cb_params_get_parse_arguments(params, argc, argv);
837
881
  break;
838
882
  case cb_cmd_arith:
883
+ params->cmd.arith.transcoder = params->bucket->transcoder;
884
+ params->cmd.arith.transcoder_opts = rb_hash_new();
839
885
  params->cmd.arith.create = params->bucket->default_arith_create;
840
886
  params->cmd.arith.initial = params->bucket->default_arith_init;
841
887
  params->cmd.arith.delta = 1;
842
- params->cmd.arith.format = params->bucket->default_format;
843
888
  params->cmd.arith.ttl = params->bucket->default_ttl;
844
889
  if (argc == 2 && TYPE(RARRAY_PTR(argv)[1]) == T_FIXNUM) {
845
890
  /* allow form incr("foo", 1) */
@@ -215,6 +215,7 @@ do_scan_connection_options(struct cb_bucket_st *bucket, int argc, VALUE *argv)
215
215
  arg = rb_hash_aref(opts, cb_sym_default_format);
216
216
  if (arg != Qnil) {
217
217
  if (TYPE(arg) == T_FIXNUM) {
218
+ rb_warn("numeric argument to :default_format option is deprecated, use symbol");
218
219
  switch (FIX2INT(arg)) {
219
220
  case CB_FMT_DOCUMENT:
220
221
  arg = cb_sym_document;
@@ -227,12 +228,18 @@ do_scan_connection_options(struct cb_bucket_st *bucket, int argc, VALUE *argv)
227
228
  break;
228
229
  }
229
230
  }
230
- if (arg == cb_sym_document || arg == cb_sym_marshal || arg == cb_sym_plain) {
231
- bucket->default_format = arg;
232
- bucket->default_flags = cb_flags_set_format(bucket->default_flags, arg);
231
+ if (arg == cb_sym_document) {
232
+ cb_bucket_transcoder_set(bucket->self, cb_mDocument);
233
+ } else if (arg == cb_sym_marshal) {
234
+ cb_bucket_transcoder_set(bucket->self, cb_mMarshal);
235
+ } else if (arg == cb_sym_plain) {
236
+ cb_bucket_transcoder_set(bucket->self, cb_mPlain);
233
237
  }
234
238
  }
235
- arg = rb_hash_aref(opts, cb_sym_environment);
239
+ arg = rb_hash_lookup2(opts, cb_sym_transcoder, Qundef);
240
+ if (arg != Qundef) {
241
+ cb_bucket_transcoder_set(bucket->self, arg);
242
+ }
236
243
  if (arg != Qnil) {
237
244
  if (arg == cb_sym_production || arg == cb_sym_development) {
238
245
  bucket->environment = arg;
@@ -269,6 +276,13 @@ do_scan_connection_options(struct cb_bucket_st *bucket, int argc, VALUE *argv)
269
276
  }
270
277
  }
271
278
  bucket->async = RTEST(rb_hash_aref(opts, cb_sym_async));
279
+ arg = rb_hash_aref(opts, cb_sym_transcoder);
280
+ if (arg != Qnil) {
281
+ bucket->default_arith_create = RTEST(arg);
282
+ if (TYPE(arg) == T_FIXNUM) {
283
+ bucket->default_arith_init = NUM2ULL(arg);
284
+ }
285
+ }
272
286
  } else {
273
287
  opts = Qnil;
274
288
  }
@@ -448,7 +462,7 @@ cb_bucket_alloc(VALUE klass)
448
462
  * instead.
449
463
  * @option options [String] :password (nil) the password of the user.
450
464
  * @option options [true, false] :quiet (false) the flag controlling if raising
451
- * exception when the client executes operations on unexising keys. If it
465
+ * exception when the client executes operations on non-existent keys. If it
452
466
  * is +true+ it will raise {Couchbase::Error::NotFound} exceptions. The
453
467
  * default behaviour is to return +nil+ value silently (might be useful in
454
468
  * Rails cache).
@@ -494,8 +508,8 @@ cb_bucket_alloc(VALUE klass)
494
508
  * @example Use list of nodes, in case some nodes might be dead
495
509
  * Couchbase.new(:node_list => ['example.com:8091', 'example.org:8091', 'example.net'])
496
510
  *
497
- * @raise [Couchbase::Error::BucketNotFound] if there no such bucket to
498
- * connect
511
+ * @raise [Couchbase::Error::BucketNotFound] if there is no such bucket to
512
+ * connect to
499
513
  *
500
514
  * @raise [Couchbase::Error::Connect] if the socket wasn't accessible
501
515
  * (doesn't accept connections or doesn't respond in time)
@@ -506,7 +520,6 @@ cb_bucket_alloc(VALUE klass)
506
520
  cb_bucket_init(int argc, VALUE *argv, VALUE self)
507
521
  {
508
522
  struct cb_bucket_st *bucket = DATA_PTR(self);
509
-
510
523
  bucket->self = self;
511
524
  bucket->exception = Qnil;
512
525
  bucket->type = LCB_TYPE_BUCKET;
@@ -521,7 +534,7 @@ cb_bucket_init(int argc, VALUE *argv, VALUE self)
521
534
  bucket->quiet = 0;
522
535
  bucket->default_ttl = 0;
523
536
  bucket->default_flags = 0;
524
- bucket->default_format = cb_sym_document;
537
+ cb_bucket_transcoder_set(self, cb_mDocument);
525
538
  bucket->default_observe_timeout = 2500000;
526
539
  bucket->on_error_proc = Qnil;
527
540
  bucket->on_connect_proc = Qnil;
@@ -578,7 +591,7 @@ cb_bucket_init_copy(VALUE copy, VALUE orig)
578
591
  copy_b->engine = orig_b->engine;
579
592
  copy_b->async = orig_b->async;
580
593
  copy_b->quiet = orig_b->quiet;
581
- copy_b->default_format = orig_b->default_format;
594
+ copy_b->transcoder = orig_b->transcoder;
582
595
  copy_b->default_flags = orig_b->default_flags;
583
596
  copy_b->default_ttl = orig_b->default_ttl;
584
597
  copy_b->environment = orig_b->environment;
@@ -707,23 +720,49 @@ cb_bucket_default_flags_set(VALUE self, VALUE val)
707
720
  struct cb_bucket_st *bucket = DATA_PTR(self);
708
721
 
709
722
  bucket->default_flags = (uint32_t)NUM2ULONG(val);
710
- bucket->default_format = cb_flags_get_format(bucket->default_flags);
711
723
  return val;
712
724
  }
713
725
 
714
726
  VALUE
715
- cb_bucket_default_format_get(VALUE self)
727
+ cb_bucket_transcoder_get(VALUE self)
716
728
  {
717
729
  struct cb_bucket_st *bucket = DATA_PTR(self);
718
- return bucket->default_format;
730
+ return bucket->transcoder;
719
731
  }
720
732
 
721
733
  VALUE
722
- cb_bucket_default_format_set(VALUE self, VALUE val)
734
+ cb_bucket_transcoder_set(VALUE self, VALUE val)
723
735
  {
724
736
  struct cb_bucket_st *bucket = DATA_PTR(self);
725
737
 
738
+ if (val != Qnil && !rb_respond_to(val, cb_id_dump) && !rb_respond_to(val, cb_id_load)) {
739
+ rb_raise(rb_eArgError, "transcoder must respond to dump and load methods");
740
+ }
741
+ bucket->transcoder = val;
742
+
743
+ return bucket->transcoder;
744
+ }
745
+
746
+ VALUE
747
+ cb_bucket_default_format_get(VALUE self)
748
+ {
749
+ struct cb_bucket_st *bucket = DATA_PTR(self);
750
+
751
+ if (bucket->transcoder == cb_mDocument) {
752
+ return cb_sym_document;
753
+ } else if (bucket->transcoder == cb_mMarshal) {
754
+ return cb_sym_marshal;
755
+ } else if (bucket->transcoder == cb_mPlain) {
756
+ return cb_sym_plain;
757
+ }
758
+ return Qnil;
759
+ }
760
+
761
+ VALUE
762
+ cb_bucket_default_format_set(VALUE self, VALUE val)
763
+ {
726
764
  if (TYPE(val) == T_FIXNUM) {
765
+ rb_warn("numeric argument to #default_format option is deprecated, use symbol");
727
766
  switch (FIX2INT(val)) {
728
767
  case CB_FMT_DOCUMENT:
729
768
  val = cb_sym_document;
@@ -736,9 +775,14 @@ cb_bucket_default_format_set(VALUE self, VALUE val)
736
775
  break;
737
776
  }
738
777
  }
739
- if (val == cb_sym_document || val == cb_sym_marshal || val == cb_sym_plain) {
740
- bucket->default_format = val;
741
- bucket->default_flags = cb_flags_set_format(bucket->default_flags, val);
778
+ if (val == cb_sym_document) {
779
+ cb_bucket_transcoder_set(self, cb_mDocument);
780
+ } else if (val == cb_sym_marshal) {
781
+ cb_bucket_transcoder_set(self, cb_mMarshal);
782
+ } else if (val == cb_sym_plain) {
783
+ cb_bucket_transcoder_set(self, cb_mPlain);
784
+ } else {
785
+ rb_raise(rb_eArgError, "unknown format");
742
786
  }
743
787
 
744
788
  return val;
@@ -1103,9 +1147,9 @@ cb_bucket_inspect(VALUE self)
1103
1147
  rb_str_append(str, bucket->pool);
1104
1148
  rb_str_buf_cat2(str, "/buckets/");
1105
1149
  rb_str_append(str, bucket->bucket);
1106
- rb_str_buf_cat2(str, "/");
1107
- snprintf(buf, 150, "\" default_format=:%s, default_flags=0x%x, quiet=%s, connected=%s, timeout=%u",
1108
- rb_id2name(SYM2ID(bucket->default_format)),
1150
+ rb_str_buf_cat2(str, "/\" transcoder=");
1151
+ rb_str_append(str, rb_inspect(bucket->transcoder));
1152
+ snprintf(buf, 150, ", default_flags=0x%x, quiet=%s, connected=%s, timeout=%u",
1109
1153
  bucket->default_flags,
1110
1154
  bucket->quiet ? "true" : "false",
1111
1155
  (bucket->handle && bucket->connected) ? "true" : "false",
@@ -25,7 +25,8 @@ cb_context_mark(void *p, struct cb_bucket_st* bucket)
25
25
  rb_gc_mark(ctx->rv);
26
26
  rb_gc_mark(ctx->exception);
27
27
  rb_gc_mark(ctx->observe_options);
28
- rb_gc_mark(ctx->force_format);
28
+ rb_gc_mark(ctx->transcoder);
29
+ rb_gc_mark(ctx->transcoder_opts);
29
30
  rb_gc_mark(ctx->operation);
30
31
  rb_gc_mark(ctx->headers_val);
31
32
  (void)bucket;
@@ -27,8 +27,10 @@ VALUE cb_cTimer;
27
27
  /* Modules */
28
28
  VALUE cb_mCouchbase;
29
29
  VALUE cb_mError;
30
+ VALUE cb_mTranscoder;
31
+ VALUE cb_mDocument;
32
+ VALUE cb_mPlain;
30
33
  VALUE cb_mMarshal;
31
- VALUE cb_mMultiJson;
32
34
  VALUE cb_mURI;
33
35
  VALUE em_m;
34
36
 
@@ -62,6 +64,7 @@ ID cb_sym_eventmachine;
62
64
  ID cb_sym_extended;
63
65
  ID cb_sym_flags;
64
66
  ID cb_sym_format;
67
+ ID cb_sym_forced;
65
68
  ID cb_sym_found;
66
69
  ID cb_sym_get;
67
70
  ID cb_sym_hostname;
@@ -97,6 +100,7 @@ ID cb_sym_set;
97
100
  ID cb_sym_stats;
98
101
  ID cb_sym_timeout;
99
102
  ID cb_sym_touch;
103
+ ID cb_sym_transcoder;
100
104
  ID cb_sym_ttl;
101
105
  ID cb_sym_type;
102
106
  ID cb_sym_unlock;
@@ -201,10 +205,12 @@ Init_couchbase_ext(void)
201
205
  /* just a holder for EventMachine module */
202
206
  em_m = 0;
203
207
 
204
- cb_mMultiJson = rb_const_get(rb_cObject, rb_intern("MultiJson"));
205
208
  cb_mURI = rb_const_get(rb_cObject, rb_intern("URI"));
206
- cb_mMarshal = rb_const_get(rb_cObject, rb_intern("Marshal"));
207
209
  cb_mCouchbase = rb_define_module("Couchbase");
210
+ cb_mTranscoder = rb_const_get(cb_mCouchbase, rb_intern("Transcoder"));
211
+ cb_mDocument = rb_const_get(cb_mTranscoder, rb_intern("Document"));
212
+ cb_mMarshal = rb_const_get(cb_mTranscoder, rb_intern("Marshal"));
213
+ cb_mPlain = rb_const_get(cb_mTranscoder, rb_intern("Plain"));
208
214
 
209
215
  cb_mError = rb_define_module_under(cb_mCouchbase, "Error");
210
216
  /* Document-class: Couchbase::Error::Base
@@ -285,8 +291,6 @@ Init_couchbase_ext(void)
285
291
  /* Document-class: Couchbase::Error::NoMemory
286
292
  * Out of memory error (on Server)
287
293
  *
288
- * The client ran out of memory
289
- *
290
294
  * @since 1.0.0
291
295
  */
292
296
  cb_eNoMemoryError = rb_define_class_under(cb_mError, "NoMemory", cb_eBaseError);
@@ -761,6 +765,50 @@ Init_couchbase_ext(void)
761
765
  rb_define_method(cb_cBucket, "default_flags", cb_bucket_default_flags_get, 0);
762
766
  rb_define_method(cb_cBucket, "default_flags=", cb_bucket_default_flags_set, 1);
763
767
 
768
+ /* Document-method: transcoder
769
+ * Set data transcoder for the current connection
770
+ *
771
+ * @since 1.2.4
772
+ *
773
+ * It is possible to define custom transcoder to handle all value
774
+ * transformation, for example, if you need to adopt legacy
775
+ * application. The transcoder should respond to two methods:
776
+ * +dump+ and +load+. They are accepting the data itself, the
777
+ * flags field, and the options hash from the library.
778
+ *
779
+ * @example Simple data transcoder, which use Zlib to compress documents
780
+ * class ZlibTranscoder
781
+ * FMT_ZLIB = 0x04
782
+ *
783
+ * def initialize(base)
784
+ * @base = base
785
+ * end
786
+ *
787
+ * def dump(obj, flags, options = {})
788
+ * obj, flags = @base.dump(obj, flags, options)
789
+ * z = Zlib::Deflate.new(Zlib::BEST_SPEED)
790
+ * buffer = z.deflate(obj, Zlib::FINISH)
791
+ * z.close
792
+ * [buffer, flags|FMT_ZLIB]
793
+ * end
794
+ *
795
+ * def load(blob, flags, options = {})
796
+ * # decompress value only if Zlib flag set
797
+ * if (flags & FMT_ZLIB) == FMT_ZLIB
798
+ * z = Zlib::Inflate.new
799
+ * blob = z.inflate(blob)
800
+ * z.finish
801
+ * z.close
802
+ * end
803
+ * @base.load(blob, flags, options)
804
+ * end
805
+ * end
806
+ *
807
+ * @return [Object] the data transcoder */
808
+ /* rb_define_attr(cb_cBucket, "transcoder", 1, 1); */
809
+ rb_define_method(cb_cBucket, "transcoder", cb_bucket_transcoder_get, 0);
810
+ rb_define_method(cb_cBucket, "transcoder=", cb_bucket_transcoder_set, 1);
811
+
764
812
  /* Document-method: default_format
765
813
  * Default format for new values.
766
814
  *
@@ -789,11 +837,11 @@ Init_couchbase_ext(void)
789
837
  * your ruby object with standard <tt>Marshal.dump</tt> and
790
838
  * <tt>Marhal.load</tt> methods.
791
839
  *
792
- * @example Selecting plain format using cb_symbol
793
- * connection.format = :document
840
+ * @example Selecting 'plain' format using symbol
841
+ * connection.default_format = :plain
794
842
  *
795
- * @example Selecting plain format using Fixnum constant
796
- * connection.format = Couchbase::Bucket::FMT_PLAIN
843
+ * @example Selecting plain format using Fixnum constant (deprecated)
844
+ * connection.default_format = Couchbase::Bucket::FMT_PLAIN
797
845
  *
798
846
  * @note Amending default_format will also change #default_flags value
799
847
  *
@@ -1130,6 +1178,7 @@ Init_couchbase_ext(void)
1130
1178
  cb_sym_extended = ID2SYM(rb_intern("extended"));
1131
1179
  cb_sym_flags = ID2SYM(rb_intern("flags"));
1132
1180
  cb_sym_format = ID2SYM(rb_intern("format"));
1181
+ cb_sym_forced = ID2SYM(rb_intern("forced"));
1133
1182
  cb_sym_found = ID2SYM(rb_intern("found"));
1134
1183
  cb_sym_get = ID2SYM(rb_intern("get"));
1135
1184
  cb_sym_hostname = ID2SYM(rb_intern("hostname"));
@@ -1165,6 +1214,7 @@ Init_couchbase_ext(void)
1165
1214
  cb_sym_stats = ID2SYM(rb_intern("stats"));
1166
1215
  cb_sym_timeout = ID2SYM(rb_intern("timeout"));
1167
1216
  cb_sym_touch = ID2SYM(rb_intern("touch"));
1217
+ cb_sym_transcoder = ID2SYM(rb_intern("transcoder"));
1168
1218
  cb_sym_ttl = ID2SYM(rb_intern("ttl"));
1169
1219
  cb_sym_type = ID2SYM(rb_intern("type"));
1170
1220
  cb_sym_unlock = ID2SYM(rb_intern("unlock"));