libcouchbase 1.2.8 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (186) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +4 -4
  3. data/README.md +16 -8
  4. data/ext/libcouchbase/CMakeLists.txt +34 -32
  5. data/ext/libcouchbase/RELEASE_NOTES.markdown +277 -6
  6. data/ext/libcouchbase/cmake/Modules/ConfigureDtrace.cmake +14 -0
  7. data/ext/libcouchbase/cmake/Modules/FindCouchbaseLibevent.cmake +2 -0
  8. data/ext/libcouchbase/cmake/Modules/FindCouchbaseLibuv.cmake +2 -1
  9. data/ext/libcouchbase/cmake/Modules/GenerateConfigDotH.cmake +2 -0
  10. data/ext/libcouchbase/cmake/Modules/GetLibcouchbaseFlags.cmake +8 -1
  11. data/ext/libcouchbase/cmake/Modules/GetVersionInfo.cmake +3 -3
  12. data/ext/libcouchbase/cmake/config-cmake.h.in +14 -0
  13. data/ext/libcouchbase/cmake/configure +8 -26
  14. data/ext/libcouchbase/cmake/defs.mk.in +2 -2
  15. data/ext/libcouchbase/cmake/libcouchbase.stp.in +829 -0
  16. data/ext/libcouchbase/cmake/source_files.cmake +11 -2
  17. data/ext/libcouchbase/contrib/cbsasl/CMakeLists.txt +18 -2
  18. data/ext/libcouchbase/contrib/cbsasl/include/cbsasl/cbsasl.h +44 -2
  19. data/ext/libcouchbase/contrib/cbsasl/src/client.c +285 -73
  20. data/ext/libcouchbase/contrib/cbsasl/src/common.c +4 -0
  21. data/ext/libcouchbase/contrib/cbsasl/src/scram-sha/scram_utils.c +500 -0
  22. data/ext/libcouchbase/contrib/cbsasl/src/scram-sha/scram_utils.h +99 -0
  23. data/ext/libcouchbase/contrib/cliopts/CMakeLists.txt +1 -1
  24. data/ext/libcouchbase/contrib/cliopts/cliopts.h +14 -1
  25. data/ext/libcouchbase/contrib/snappy/CMakeLists.txt +2 -3
  26. data/ext/libcouchbase/contrib/snappy/snappy-sinksource.cc +4 -0
  27. data/ext/libcouchbase/contrib/snappy/snappy-stubs-public.h +7 -5
  28. data/ext/libcouchbase/contrib/snappy/snappy.cc +7 -2
  29. data/ext/libcouchbase/example/crypto/.gitignore +2 -0
  30. data/ext/libcouchbase/example/crypto/Makefile +13 -0
  31. data/ext/libcouchbase/example/crypto/common_provider.c +24 -0
  32. data/ext/libcouchbase/example/crypto/common_provider.h +31 -0
  33. data/ext/libcouchbase/example/crypto/openssl_symmetric_decrypt.c +139 -0
  34. data/ext/libcouchbase/example/crypto/openssl_symmetric_encrypt.c +147 -0
  35. data/ext/libcouchbase/example/crypto/openssl_symmetric_provider.c +281 -0
  36. data/ext/libcouchbase/example/crypto/openssl_symmetric_provider.h +29 -0
  37. data/ext/libcouchbase/example/tracing/.gitignore +2 -0
  38. data/ext/libcouchbase/example/tracing/Makefile +8 -0
  39. data/ext/libcouchbase/example/tracing/cJSON.c +1 -0
  40. data/ext/libcouchbase/example/tracing/cJSON.h +1 -0
  41. data/ext/libcouchbase/example/tracing/tracing.c +439 -0
  42. data/ext/libcouchbase/example/tracing/views.c +444 -0
  43. data/ext/libcouchbase/include/libcouchbase/auth.h +56 -4
  44. data/ext/libcouchbase/include/libcouchbase/cbft.h +8 -0
  45. data/ext/libcouchbase/include/libcouchbase/cntl-private.h +55 -1
  46. data/ext/libcouchbase/include/libcouchbase/cntl.h +101 -1
  47. data/ext/libcouchbase/include/libcouchbase/configuration.h.in +6 -0
  48. data/ext/libcouchbase/include/libcouchbase/couchbase.h +109 -6
  49. data/ext/libcouchbase/include/libcouchbase/crypto.h +140 -0
  50. data/ext/libcouchbase/include/libcouchbase/error.h +38 -2
  51. data/ext/libcouchbase/include/libcouchbase/kvbuf.h +6 -1
  52. data/ext/libcouchbase/include/libcouchbase/metrics.h +79 -0
  53. data/ext/libcouchbase/include/libcouchbase/n1ql.h +9 -0
  54. data/ext/libcouchbase/include/libcouchbase/tracing.h +319 -0
  55. data/ext/libcouchbase/include/libcouchbase/vbucket.h +1 -1
  56. data/ext/libcouchbase/include/libcouchbase/views.h +8 -0
  57. data/ext/libcouchbase/include/memcached/protocol_binary.h +40 -10
  58. data/ext/libcouchbase/packaging/rpm/libcouchbase.spec.in +6 -14
  59. data/ext/libcouchbase/plugins/io/libuv/plugin-internal.h +3 -0
  60. data/ext/libcouchbase/plugins/io/libuv/plugin-libuv.c +1 -0
  61. data/ext/libcouchbase/plugins/io/select/plugin-select.c +4 -1
  62. data/ext/libcouchbase/src/auth-priv.h +36 -4
  63. data/ext/libcouchbase/src/auth.cc +66 -27
  64. data/ext/libcouchbase/src/bootstrap.cc +1 -1
  65. data/ext/libcouchbase/src/bucketconfig/bc_cccp.cc +12 -7
  66. data/ext/libcouchbase/src/bucketconfig/bc_http.cc +26 -17
  67. data/ext/libcouchbase/src/bucketconfig/bc_http.h +1 -1
  68. data/ext/libcouchbase/src/bucketconfig/clconfig.h +4 -2
  69. data/ext/libcouchbase/src/bucketconfig/confmon.cc +6 -3
  70. data/ext/libcouchbase/src/cbft.cc +48 -0
  71. data/ext/libcouchbase/src/cntl.cc +138 -2
  72. data/ext/libcouchbase/src/config_static.h +17 -0
  73. data/ext/libcouchbase/src/connspec.cc +54 -6
  74. data/ext/libcouchbase/src/connspec.h +9 -1
  75. data/ext/libcouchbase/src/crypto.cc +386 -0
  76. data/ext/libcouchbase/src/ctx-log-inl.h +23 -6
  77. data/ext/libcouchbase/src/dump.cc +4 -0
  78. data/ext/libcouchbase/src/getconfig.cc +1 -2
  79. data/ext/libcouchbase/src/handler.cc +65 -27
  80. data/ext/libcouchbase/src/hostlist.cc +35 -7
  81. data/ext/libcouchbase/src/hostlist.h +7 -0
  82. data/ext/libcouchbase/src/http/http-priv.h +2 -0
  83. data/ext/libcouchbase/src/http/http.cc +77 -37
  84. data/ext/libcouchbase/src/http/http_io.cc +19 -2
  85. data/ext/libcouchbase/src/instance.cc +90 -17
  86. data/ext/libcouchbase/src/internal.h +5 -0
  87. data/ext/libcouchbase/src/lcbio/connect.cc +39 -4
  88. data/ext/libcouchbase/src/lcbio/connect.h +27 -0
  89. data/ext/libcouchbase/src/lcbio/ctx.c +49 -23
  90. data/ext/libcouchbase/src/lcbio/ioutils.cc +30 -3
  91. data/ext/libcouchbase/src/lcbio/ioutils.h +2 -0
  92. data/ext/libcouchbase/src/lcbio/manager.cc +44 -8
  93. data/ext/libcouchbase/src/lcbio/manager.h +2 -0
  94. data/ext/libcouchbase/src/lcbio/rw-inl.h +1 -0
  95. data/ext/libcouchbase/src/lcbio/ssl.h +3 -5
  96. data/ext/libcouchbase/src/logging.c +1 -1
  97. data/ext/libcouchbase/src/logging.h +2 -0
  98. data/ext/libcouchbase/src/mc/compress.cc +164 -0
  99. data/ext/libcouchbase/src/mc/compress.h +7 -12
  100. data/ext/libcouchbase/src/mc/mcreq-flush-inl.h +5 -1
  101. data/ext/libcouchbase/src/mc/mcreq.c +11 -1
  102. data/ext/libcouchbase/src/mc/mcreq.h +35 -4
  103. data/ext/libcouchbase/src/mcserver/mcserver.cc +30 -7
  104. data/ext/libcouchbase/src/mcserver/mcserver.h +7 -0
  105. data/ext/libcouchbase/src/mcserver/negotiate.cc +103 -57
  106. data/ext/libcouchbase/src/mcserver/negotiate.h +2 -2
  107. data/ext/libcouchbase/src/mctx-helper.h +11 -0
  108. data/ext/libcouchbase/src/metrics.cc +132 -0
  109. data/ext/libcouchbase/src/n1ql/ixmgmt.cc +2 -1
  110. data/ext/libcouchbase/src/n1ql/n1ql.cc +66 -0
  111. data/ext/libcouchbase/src/newconfig.cc +9 -2
  112. data/ext/libcouchbase/src/operations/counter.cc +2 -1
  113. data/ext/libcouchbase/src/operations/durability-cas.cc +11 -0
  114. data/ext/libcouchbase/src/operations/durability-seqno.cc +3 -0
  115. data/ext/libcouchbase/src/operations/durability.cc +24 -2
  116. data/ext/libcouchbase/src/operations/durability_internal.h +19 -0
  117. data/ext/libcouchbase/src/operations/get.cc +4 -2
  118. data/ext/libcouchbase/src/operations/observe-seqno.cc +1 -0
  119. data/ext/libcouchbase/src/operations/observe.cc +113 -62
  120. data/ext/libcouchbase/src/operations/ping.cc +246 -67
  121. data/ext/libcouchbase/src/operations/remove.cc +2 -1
  122. data/ext/libcouchbase/src/operations/store.cc +17 -14
  123. data/ext/libcouchbase/src/operations/touch.cc +3 -0
  124. data/ext/libcouchbase/src/packetutils.h +68 -4
  125. data/ext/libcouchbase/src/probes.d +132 -161
  126. data/ext/libcouchbase/src/rdb/bigalloc.c +1 -1
  127. data/ext/libcouchbase/src/retryq.cc +6 -2
  128. data/ext/libcouchbase/src/rnd.cc +68 -0
  129. data/ext/libcouchbase/src/rnd.h +39 -0
  130. data/ext/libcouchbase/src/settings.c +27 -0
  131. data/ext/libcouchbase/src/settings.h +67 -3
  132. data/ext/libcouchbase/src/ssl/CMakeLists.txt +0 -12
  133. data/ext/libcouchbase/src/ssl/ssl_common.c +23 -4
  134. data/ext/libcouchbase/src/strcodecs/base64.c +141 -16
  135. data/ext/libcouchbase/src/strcodecs/strcodecs.h +16 -1
  136. data/ext/libcouchbase/src/trace.h +68 -61
  137. data/ext/libcouchbase/src/tracing/span.cc +289 -0
  138. data/ext/libcouchbase/src/tracing/threshold_logging_tracer.cc +171 -0
  139. data/ext/libcouchbase/src/tracing/tracer.cc +53 -0
  140. data/ext/libcouchbase/src/tracing/tracing-internal.h +213 -0
  141. data/ext/libcouchbase/src/utilities.c +5 -0
  142. data/ext/libcouchbase/src/vbucket/CMakeLists.txt +2 -2
  143. data/ext/libcouchbase/src/vbucket/vbucket.c +50 -18
  144. data/ext/libcouchbase/src/views/docreq.cc +26 -1
  145. data/ext/libcouchbase/src/views/docreq.h +17 -0
  146. data/ext/libcouchbase/src/views/viewreq.cc +64 -1
  147. data/ext/libcouchbase/src/views/viewreq.h +21 -0
  148. data/ext/libcouchbase/tests/CMakeLists.txt +6 -6
  149. data/ext/libcouchbase/tests/basic/t_base64.cc +34 -6
  150. data/ext/libcouchbase/tests/basic/t_connstr.cc +14 -0
  151. data/ext/libcouchbase/tests/basic/t_creds.cc +10 -10
  152. data/ext/libcouchbase/tests/basic/t_host.cc +22 -2
  153. data/ext/libcouchbase/tests/basic/t_scram.cc +514 -0
  154. data/ext/libcouchbase/tests/check-all.cc +6 -2
  155. data/ext/libcouchbase/tests/iotests/mock-environment.cc +64 -0
  156. data/ext/libcouchbase/tests/iotests/mock-environment.h +27 -1
  157. data/ext/libcouchbase/tests/iotests/t_confmon.cc +2 -2
  158. data/ext/libcouchbase/tests/iotests/t_forward.cc +8 -0
  159. data/ext/libcouchbase/tests/iotests/t_netfail.cc +124 -0
  160. data/ext/libcouchbase/tests/iotests/t_smoke.cc +1 -1
  161. data/ext/libcouchbase/tests/iotests/t_snappy.cc +316 -0
  162. data/ext/libcouchbase/tests/socktests/socktest.cc +2 -2
  163. data/ext/libcouchbase/tests/socktests/t_basic.cc +6 -6
  164. data/ext/libcouchbase/tests/socktests/t_manager.cc +1 -1
  165. data/ext/libcouchbase/tests/socktests/t_ssl.cc +1 -1
  166. data/ext/libcouchbase/tools/CMakeLists.txt +1 -1
  167. data/ext/libcouchbase/tools/cbc-handlers.h +17 -0
  168. data/ext/libcouchbase/tools/cbc-n1qlback.cc +7 -4
  169. data/ext/libcouchbase/tools/cbc-pillowfight.cc +408 -100
  170. data/ext/libcouchbase/tools/cbc-proxy.cc +134 -3
  171. data/ext/libcouchbase/tools/cbc-subdoc.cc +1 -2
  172. data/ext/libcouchbase/tools/cbc.cc +113 -8
  173. data/ext/libcouchbase/tools/common/histogram.cc +1 -0
  174. data/ext/libcouchbase/tools/common/options.cc +28 -1
  175. data/ext/libcouchbase/tools/common/options.h +5 -0
  176. data/ext/libcouchbase/tools/docgen/docgen.h +36 -10
  177. data/ext/libcouchbase/tools/docgen/loc.h +5 -4
  178. data/ext/libcouchbase/tools/docgen/seqgen.h +28 -0
  179. data/lib/libcouchbase/ext/libcouchbase/enums.rb +10 -0
  180. data/lib/libcouchbase/n1ql.rb +6 -1
  181. data/lib/libcouchbase/version.rb +1 -1
  182. data/spec/connection_spec.rb +6 -6
  183. metadata +38 -5
  184. data/ext/libcouchbase/cmake/Modules/FindCouchbaseSnappy.cmake +0 -11
  185. data/ext/libcouchbase/src/mc/compress.c +0 -90
  186. data/ext/libcouchbase/tools/common/my_inttypes.h +0 -22
@@ -24,11 +24,14 @@ namespace cbc {
24
24
  X(String, saslmech, "force-sasl-mech", 'S') \
25
25
  X(String, connstr, "spec", 'U') \
26
26
  X(String, ssl, "ssl", '\0') \
27
+ X(String, truststorepath, "truststorepath", '\0') \
27
28
  X(String, certpath, "certpath", '\0') \
29
+ X(String, keypath, "keypath", '\0') \
28
30
  X(UInt, timeout, "timeout", '\0') \
29
31
  X(Bool, timings, "timings", 'T') \
30
32
  X(Bool, verbose, "verbose", 'v') \
31
33
  X(Bool, dump, "dump", '\0') \
34
+ X(Bool, compress, "compress", 'y') \
32
35
  X(List, cparams, "cparam", 'D')
33
36
 
34
37
 
@@ -61,6 +64,8 @@ public:
61
64
  void addToParser(cliopts::Parser& parser);
62
65
  lcb_error_t doCtls(lcb_t instance);
63
66
  bool useTimings() { return o_timings.result(); }
67
+ int numTimings() { return o_timings.numSpecified(); }
68
+ cliopts::BoolOption& getTimings() { return o_timings; }
64
69
  void setAdminMode();
65
70
  bool shouldDump() { return o_dump.result(); }
66
71
  void writeConfig(const std::string& dest = getConfigfileName());
@@ -69,6 +69,26 @@ public:
69
69
  virtual ~DocGeneratorBase() {}
70
70
  };
71
71
 
72
+ static const char alphabet[] = "0123456789 abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
73
+
74
+ static void random_fill(std::string& str, int level) {
75
+ if (level > 1) {
76
+ for (size_t ii = 0; ii < str.size(); ii++) {
77
+ str[ii] = rand() % (0x7e - 0x20) + 0x20; // printable
78
+ switch (str[ii]) {
79
+ case 0x5c: // backslash
80
+ case 0x22: // double quote
81
+ str[ii]++;
82
+ break;
83
+ }
84
+ }
85
+ } else if (level > 0) {
86
+ for (size_t ii = 0; ii < str.size(); ii++) {
87
+ str[ii] = alphabet[rand() % (sizeof(alphabet) - 1)];
88
+ }
89
+ }
90
+ }
91
+
72
92
  /**
73
93
  * Generator class for raw objects. This contains a fixed buffer and will
74
94
  * simply vary in how 'long' the buffer is
@@ -104,10 +124,13 @@ public:
104
124
  return ret;
105
125
  }
106
126
 
107
- RawDocGenerator(uint32_t minsz, uint32_t maxsz)
127
+ RawDocGenerator(uint32_t minsz, uint32_t maxsz, int rnd)
108
128
  : m_sizes(gen_graded_sizes(minsz, maxsz)) {
109
129
  // Populate the buffer to its capacity
110
130
  m_buf.insert(0, maxsz, '#');
131
+ if (rnd) {
132
+ random_fill(m_buf, rnd);
133
+ }
111
134
  }
112
135
 
113
136
 
@@ -202,18 +225,18 @@ public:
202
225
  * @param minsz Minimum JSON document size
203
226
  * @param maxsz Maximum JSON document size
204
227
  */
205
- JsonDocGenerator(uint32_t minsz, uint32_t maxsz)
228
+ JsonDocGenerator(uint32_t minsz, uint32_t maxsz, int rnd)
206
229
  {
207
- genDocuments(minsz, maxsz, m_docs);
230
+ genDocuments(minsz, maxsz, m_docs, rnd);
208
231
  for (size_t ii = 0; ii < m_docs.size(); ++ii) {
209
232
  m_bufs.push_back(m_docs[ii].m_doc);
210
233
  }
211
234
  }
212
235
 
213
- static void genDocuments(uint32_t minsz, uint32_t maxsz, std::vector<std::string>& out)
236
+ static void genDocuments(uint32_t minsz, uint32_t maxsz, std::vector<std::string>& out, int rnd)
214
237
  {
215
238
  std::vector<Doc> docs;
216
- genDocuments(minsz, maxsz, docs);
239
+ genDocuments(minsz, maxsz, docs, rnd);
217
240
  for (size_t ii = 0; ii < docs.size(); ++ii) {
218
241
  out.push_back(docs[ii].m_doc);
219
242
  }
@@ -234,12 +257,12 @@ private:
234
257
  }
235
258
 
236
259
  static void
237
- genDocuments(uint32_t minsz, uint32_t maxsz, std::vector<Doc>& out)
260
+ genDocuments(uint32_t minsz, uint32_t maxsz, std::vector<Doc>& out, int rnd)
238
261
  {
239
262
  std::vector<size_t> sizes = RawDocGenerator::gen_graded_sizes(minsz, maxsz);
240
263
  for (std::vector<size_t>::iterator ii = sizes.begin();
241
264
  ii != sizes.end(); ++ii) {
242
- out.push_back(generate(*ii));
265
+ out.push_back(generate(*ii, rnd));
243
266
  }
244
267
  }
245
268
 
@@ -249,7 +272,7 @@ private:
249
272
  * "Field_$incr" and values will be evenly distributed as fixed 16 byte
250
273
  * strings. (See JSON_VALUE_SIZE)
251
274
  */
252
- static Doc generate(int docsize)
275
+ static Doc generate(int docsize, int rnd)
253
276
  {
254
277
  int counter = 0;
255
278
  char keybuf[128] = { 0 };
@@ -264,6 +287,9 @@ private:
264
287
  valsize = 1;
265
288
  }
266
289
  std::string value(valsize, '*');
290
+ if (rnd) {
291
+ random_fill(value, rnd);
292
+ }
267
293
  decrSize(&docsize, valsize + 3);
268
294
  root[keybuf] = value;
269
295
  value = '"' + value;
@@ -424,10 +450,10 @@ public:
424
450
  * @param maxsz Maximum document size
425
451
  */
426
452
  PlaceholderJsonGenerator(uint32_t minsz, uint32_t maxsz,
427
- const std::vector<TemplateSpec>& specs) {
453
+ const std::vector<TemplateSpec>& specs, int rnd) {
428
454
 
429
455
  std::vector<std::string> jsondocs;
430
- JsonDocGenerator::genDocuments(minsz, maxsz, jsondocs);
456
+ JsonDocGenerator::genDocuments(minsz, maxsz, jsondocs, rnd);
431
457
  initJsonPlaceholders(specs, jsondocs);
432
458
  }
433
459
 
@@ -191,9 +191,9 @@ public:
191
191
  dumpIovs(const std::vector<lcb_IOV>& vecs) {
192
192
  for (size_t ii = 0; ii < vecs.size(); ii++) {
193
193
  const lcb_IOV& iov = vecs[ii];
194
- printf("IOV[%lu]. Buf=%p. Len=%lu. Content=%.*s\n",
195
- ii, iov.iov_base, iov.iov_len,
196
- (int)iov.iov_len, (const char*)iov.iov_base);
194
+ printf("IOV[%lu]. Buf=%p. Len=%lu. Content=%.*s\n", (unsigned long int)ii,
195
+ (void *)iov.iov_base, (unsigned long int)iov.iov_len,
196
+ (int)iov.iov_len, (const char*)iov.iov_base);
197
197
  }
198
198
  }
199
199
  static void
@@ -202,7 +202,8 @@ public:
202
202
  const Loc& loc = vecs[ii];
203
203
  std::string s = loc.to_string();
204
204
  printf("Loc[%lu]. Buf=%p. Len=%lu. Content=%s\n",
205
- ii, (void *)loc.at, loc.length, s.c_str());
205
+ (unsigned long int)ii, (void *)loc.at,
206
+ (unsigned long int)loc.length, s.c_str());
206
207
  }
207
208
  }
208
209
  };
@@ -35,6 +35,8 @@ public:
35
35
  offset = start;
36
36
  uint32_t total = end - start;
37
37
  total_self = total / num_workers;
38
+ locked = std::vector<bool>(total_self, false);
39
+ lnum = 0;
38
40
  offset += total_self * cur_worker;
39
41
  rnum = 0;
40
42
  sequential = true;
@@ -44,6 +46,8 @@ public:
44
46
  /** Initialize as a random range */
45
47
  SeqGenerator(uint32_t start, uint32_t end) {
46
48
  total_self = end - start;
49
+ locked = std::vector<bool>(total_self, false);
50
+ lnum = 0;
47
51
  offset = start;
48
52
  rnum = 0;
49
53
  curr_seqno = 0;
@@ -78,6 +82,28 @@ public:
78
82
  }
79
83
  }
80
84
 
85
+ uint32_t checkout() {
86
+ uint32_t num;
87
+ num = next();
88
+ if (lnum == locked.size()) {
89
+ lnum = 0;
90
+ std::fill(locked.begin(), locked.end(), false);
91
+ } else {
92
+ while (locked[num - offset]) {
93
+ num = next();
94
+ }
95
+ }
96
+ locked[num - offset] = true;
97
+ lnum++;
98
+ return num;
99
+ }
100
+
101
+ void checkin(uint32_t num) {
102
+ if (num - offset < locked.size()) {
103
+ locked[num - offset] = 0;
104
+ }
105
+ }
106
+
81
107
  uint32_t maxItems() const {
82
108
  return total_self;
83
109
  }
@@ -85,6 +111,8 @@ public:
85
111
  private:
86
112
  bool sequential;
87
113
  std::vector<uint32_t> seqpool;
114
+ std::vector<bool> locked; // lock markers
115
+ uint32_t lnum; // number of locked keys
88
116
  uint32_t rnum; // internal iterator
89
117
  uint32_t offset; // beginning numerical offset
90
118
  uint32_t total_self; // maximum value of iterator
@@ -836,6 +836,16 @@ module Libcouchbase::Ext
836
836
  :generic_constraint_err, 82,
837
837
  :nameserver_error, 83,
838
838
  :not_authorized, 84,
839
+ :subdoc_invalid_combo, 85,
840
+ :subdoc_multi_path_failure, 86,
841
+ :subdoc_success_deleted, 87,
842
+ :subdoc_xattr_invalid_flag_combo, 88,
843
+ :subdoc_xattr_invalid_key_combo, 89,
844
+ :subdoc_xattr_unknown_macro, 90,
845
+ :subdoc_xattr_unknown_vattr, 91,
846
+ :subdoc_xattr_cant_modify_vattr, 92,
847
+ :subdoc_multi_path_failure_deleted, 93,
848
+ :subdoc_invalid_xattr_order, 94,
839
849
  :max_error, 4096
840
850
  ]
841
851
 
@@ -2,7 +2,12 @@
2
2
 
3
3
  module Libcouchbase
4
4
  class N1QL
5
- Ordering = [:select, :insert_into, :delete_from, :update, :from, :use_keys, :unnest, :join, :where, :group_by, :order_by, :limit, :offset]
5
+ Ordering = [
6
+ :build_index, :create_index, :drop_index, :create_primary_index,
7
+ :drop_primary_index, :grant, :on, :to, :infer, :select, :insert_into,
8
+ :delete_from, :update, :from, :with, :use_keys, :unnest, :join, :where,
9
+ :group_by, :order_by, :limit, :offset, :upsert_into, :merge_into
10
+ ]
6
11
 
7
12
  def initialize(bucket, explain: false, **options)
8
13
  @bucket = bucket
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true, encoding: ASCII-8BIT
2
2
 
3
3
  module Libcouchbase
4
- VERSION = '1.2.8'
4
+ VERSION = '1.3.0'
5
5
  end
@@ -111,8 +111,8 @@ describe Libcouchbase::Connection do
111
111
  @reactor.run { |reactor|
112
112
  connection = Libcouchbase::Connection.new
113
113
  connection.connect.then do
114
- expect(co(connection.configure(:operation_timeout, 1500000))).to be(connection)
115
- expect { co(connection.configure(:bob, 1500000)) }.to raise_error(Libcouchbase::Error)
114
+ expect(connection.configure(:operation_timeout, 1500000).value).to be(connection)
115
+ expect { connection.configure(:bob, 1500000).value }.to raise_error(Libcouchbase::Error)
116
116
  @log << :success
117
117
  connection.destroy
118
118
  end
@@ -125,8 +125,8 @@ describe Libcouchbase::Connection do
125
125
  @reactor.run { |reactor|
126
126
  begin
127
127
  connection = Libcouchbase::Connection.new
128
- co connection.connect
129
- @log = co(connection.get_server_list)
128
+ connection.connect.value
129
+ @log = connection.get_server_list.value
130
130
  ensure
131
131
  connection.destroy
132
132
  end
@@ -163,9 +163,9 @@ describe Libcouchbase::Connection do
163
163
  connection.touch('testtouch', expire_in: 1).then(proc {
164
164
  @log << 'set'
165
165
  sleep 2
166
- connection.get('testtouch').catch(proc {|err|
166
+ connection.get('testtouch').catch do |err|
167
167
  @log << err.is_a?(Libcouchbase::Error::KeyNotFound)
168
- })
168
+ end
169
169
  })
170
170
  }, proc { |error|
171
171
  @log << error
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: libcouchbase
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.8
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stephen von Takach
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-12-10 00:00:00.000000000 Z
11
+ date: 2018-05-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ffi
@@ -161,7 +161,6 @@ files:
161
161
  - ext/libcouchbase/cmake/Modules/FindCouchbaseLibev.cmake
162
162
  - ext/libcouchbase/cmake/Modules/FindCouchbaseLibevent.cmake
163
163
  - ext/libcouchbase/cmake/Modules/FindCouchbaseLibuv.cmake
164
- - ext/libcouchbase/cmake/Modules/FindCouchbaseSnappy.cmake
165
164
  - ext/libcouchbase/cmake/Modules/GenerateConfigDotH.cmake
166
165
  - ext/libcouchbase/cmake/Modules/GetLibcouchbaseFlags.cmake
167
166
  - ext/libcouchbase/cmake/Modules/GetPlatformCCInfo.cmake
@@ -170,6 +169,7 @@ files:
170
169
  - ext/libcouchbase/cmake/configure
171
170
  - ext/libcouchbase/cmake/defs.mk.in
172
171
  - ext/libcouchbase/cmake/dtrace-instr-link.pl
172
+ - ext/libcouchbase/cmake/libcouchbase.stp.in
173
173
  - ext/libcouchbase/cmake/source_files.cmake
174
174
  - ext/libcouchbase/contrib/cJSON/cJSON.c
175
175
  - ext/libcouchbase/contrib/cJSON/cJSON.h
@@ -184,6 +184,8 @@ files:
184
184
  - ext/libcouchbase/contrib/cbsasl/src/cram-md5/md5.h
185
185
  - ext/libcouchbase/contrib/cbsasl/src/hash.c
186
186
  - ext/libcouchbase/contrib/cbsasl/src/hash.h
187
+ - ext/libcouchbase/contrib/cbsasl/src/scram-sha/scram_utils.c
188
+ - ext/libcouchbase/contrib/cbsasl/src/scram-sha/scram_utils.h
187
189
  - ext/libcouchbase/contrib/cbsasl/src/util.h
188
190
  - ext/libcouchbase/contrib/cliopts/CMakeLists.txt
189
191
  - ext/libcouchbase/contrib/cliopts/cliopts.c
@@ -282,10 +284,14 @@ files:
282
284
  - ext/libcouchbase/doc/man/cbc-connstr.1
283
285
  - ext/libcouchbase/doc/man/cbc-cp.1
284
286
  - ext/libcouchbase/doc/man/cbc-create.1
287
+ - ext/libcouchbase/doc/man/cbc-decr.1
285
288
  - ext/libcouchbase/doc/man/cbc-dsn.1
286
289
  - ext/libcouchbase/doc/man/cbc-flush.1
287
290
  - ext/libcouchbase/doc/man/cbc-hash.1
291
+ - ext/libcouchbase/doc/man/cbc-incr.1
288
292
  - ext/libcouchbase/doc/man/cbc-lock.1
293
+ - ext/libcouchbase/doc/man/cbc-mcflush.1
294
+ - ext/libcouchbase/doc/man/cbc-n1ql.1
289
295
  - ext/libcouchbase/doc/man/cbc-n1qlback.1
290
296
  - ext/libcouchbase/doc/man/cbc-observe.1
291
297
  - ext/libcouchbase/doc/man/cbc-pillowfight.1
@@ -301,11 +307,20 @@ files:
301
307
  - ext/libcouchbase/doc/man/cbc-verbosity.1
302
308
  - ext/libcouchbase/doc/man/cbc-version.1
303
309
  - ext/libcouchbase/doc/man/cbc-view.1
310
+ - ext/libcouchbase/doc/man/cbc-watch.1
304
311
  - ext/libcouchbase/doc/man/cbc.1
305
312
  - ext/libcouchbase/doc/man/cbcrc.4
306
313
  - ext/libcouchbase/doc/style.css
307
314
  - ext/libcouchbase/example/CMakeLists.txt
308
315
  - ext/libcouchbase/example/README.markdown
316
+ - ext/libcouchbase/example/crypto/.gitignore
317
+ - ext/libcouchbase/example/crypto/Makefile
318
+ - ext/libcouchbase/example/crypto/common_provider.c
319
+ - ext/libcouchbase/example/crypto/common_provider.h
320
+ - ext/libcouchbase/example/crypto/openssl_symmetric_decrypt.c
321
+ - ext/libcouchbase/example/crypto/openssl_symmetric_encrypt.c
322
+ - ext/libcouchbase/example/crypto/openssl_symmetric_provider.c
323
+ - ext/libcouchbase/example/crypto/openssl_symmetric_provider.h
309
324
  - ext/libcouchbase/example/db/db.c
310
325
  - ext/libcouchbase/example/db/vb.c
311
326
  - ext/libcouchbase/example/instancepool/main.cc
@@ -320,6 +335,12 @@ files:
320
335
  - ext/libcouchbase/example/subdoc/subdoc-simple.cc
321
336
  - ext/libcouchbase/example/subdoc/subdoc-xattrs.c
322
337
  - ext/libcouchbase/example/tick/tick.c
338
+ - ext/libcouchbase/example/tracing/.gitignore
339
+ - ext/libcouchbase/example/tracing/Makefile
340
+ - ext/libcouchbase/example/tracing/cJSON.c
341
+ - ext/libcouchbase/example/tracing/cJSON.h
342
+ - ext/libcouchbase/example/tracing/tracing.c
343
+ - ext/libcouchbase/example/tracing/views.c
323
344
  - ext/libcouchbase/example/users/README
324
345
  - ext/libcouchbase/example/users/users.c
325
346
  - ext/libcouchbase/example/views/views-example.cc
@@ -333,12 +354,14 @@ files:
333
354
  - ext/libcouchbase/include/libcouchbase/cntl.h
334
355
  - ext/libcouchbase/include/libcouchbase/configuration.h.in
335
356
  - ext/libcouchbase/include/libcouchbase/couchbase.h
357
+ - ext/libcouchbase/include/libcouchbase/crypto.h
336
358
  - ext/libcouchbase/include/libcouchbase/deprecated.h
337
359
  - ext/libcouchbase/include/libcouchbase/error.h
338
360
  - ext/libcouchbase/include/libcouchbase/http.h
339
361
  - ext/libcouchbase/include/libcouchbase/iops.h
340
362
  - ext/libcouchbase/include/libcouchbase/ixmgmt.h
341
363
  - ext/libcouchbase/include/libcouchbase/kvbuf.h
364
+ - ext/libcouchbase/include/libcouchbase/metrics.h
342
365
  - ext/libcouchbase/include/libcouchbase/n1ql.h
343
366
  - ext/libcouchbase/include/libcouchbase/pktfwd.h
344
367
  - ext/libcouchbase/include/libcouchbase/plugins/io/bsdio-inl.c
@@ -346,6 +369,7 @@ files:
346
369
  - ext/libcouchbase/include/libcouchbase/plugins/io/wsaerr.h
347
370
  - ext/libcouchbase/include/libcouchbase/subdoc.h
348
371
  - ext/libcouchbase/include/libcouchbase/sysdefs.h
372
+ - ext/libcouchbase/include/libcouchbase/tracing.h
349
373
  - ext/libcouchbase/include/libcouchbase/vbucket.h
350
374
  - ext/libcouchbase/include/libcouchbase/views.h
351
375
  - ext/libcouchbase/include/libcouchbase/visibility.h
@@ -411,6 +435,7 @@ files:
411
435
  - ext/libcouchbase/src/config_static.h
412
436
  - ext/libcouchbase/src/connspec.cc
413
437
  - ext/libcouchbase/src/connspec.h
438
+ - ext/libcouchbase/src/crypto.cc
414
439
  - ext/libcouchbase/src/ctx-log-inl.h
415
440
  - ext/libcouchbase/src/dns-srv.cc
416
441
  - ext/libcouchbase/src/dump.cc
@@ -456,7 +481,7 @@ files:
456
481
  - ext/libcouchbase/src/list.h
457
482
  - ext/libcouchbase/src/logging.c
458
483
  - ext/libcouchbase/src/logging.h
459
- - ext/libcouchbase/src/mc/compress.c
484
+ - ext/libcouchbase/src/mc/compress.cc
460
485
  - ext/libcouchbase/src/mc/compress.h
461
486
  - ext/libcouchbase/src/mc/forward.c
462
487
  - ext/libcouchbase/src/mc/forward.h
@@ -470,6 +495,7 @@ files:
470
495
  - ext/libcouchbase/src/mcserver/negotiate.cc
471
496
  - ext/libcouchbase/src/mcserver/negotiate.h
472
497
  - ext/libcouchbase/src/mctx-helper.h
498
+ - ext/libcouchbase/src/metrics.cc
473
499
  - ext/libcouchbase/src/n1ql/ixmgmt.cc
474
500
  - ext/libcouchbase/src/n1ql/n1ql-internal.h
475
501
  - ext/libcouchbase/src/n1ql/n1ql.cc
@@ -509,6 +535,8 @@ files:
509
535
  - ext/libcouchbase/src/retryq.h
510
536
  - ext/libcouchbase/src/ringbuffer.c
511
537
  - ext/libcouchbase/src/ringbuffer.h
538
+ - ext/libcouchbase/src/rnd.cc
539
+ - ext/libcouchbase/src/rnd.h
512
540
  - ext/libcouchbase/src/settings.c
513
541
  - ext/libcouchbase/src/settings.h
514
542
  - ext/libcouchbase/src/sllist-inl.h
@@ -522,6 +550,10 @@ files:
522
550
  - ext/libcouchbase/src/strcodecs/strcodecs.h
523
551
  - ext/libcouchbase/src/timings.c
524
552
  - ext/libcouchbase/src/trace.h
553
+ - ext/libcouchbase/src/tracing/span.cc
554
+ - ext/libcouchbase/src/tracing/threshold_logging_tracer.cc
555
+ - ext/libcouchbase/src/tracing/tracer.cc
556
+ - ext/libcouchbase/src/tracing/tracing-internal.h
525
557
  - ext/libcouchbase/src/utilities.c
526
558
  - ext/libcouchbase/src/vbucket/CMakeLists.txt
527
559
  - ext/libcouchbase/src/vbucket/aliases.h
@@ -554,6 +586,7 @@ files:
554
586
  - ext/libcouchbase/tests/basic/t_netbuf.cc
555
587
  - ext/libcouchbase/tests/basic/t_packet.cc
556
588
  - ext/libcouchbase/tests/basic/t_ringbuffer.cc
589
+ - ext/libcouchbase/tests/basic/t_scram.cc
557
590
  - ext/libcouchbase/tests/basic/t_slist.cc
558
591
  - ext/libcouchbase/tests/basic/t_strerror.cc
559
592
  - ext/libcouchbase/tests/basic/t_urlencode.cc
@@ -595,6 +628,7 @@ files:
595
628
  - ext/libcouchbase/tests/iotests/t_sched.cc
596
629
  - ext/libcouchbase/tests/iotests/t_serverops.cc
597
630
  - ext/libcouchbase/tests/iotests/t_smoke.cc
631
+ - ext/libcouchbase/tests/iotests/t_snappy.cc
598
632
  - ext/libcouchbase/tests/iotests/t_subdoc.cc
599
633
  - ext/libcouchbase/tests/iotests/t_syncmode.cc
600
634
  - ext/libcouchbase/tests/iotests/t_views.cc
@@ -650,7 +684,6 @@ files:
650
684
  - ext/libcouchbase/tools/cbc.cc
651
685
  - ext/libcouchbase/tools/common/histogram.cc
652
686
  - ext/libcouchbase/tools/common/histogram.h
653
- - ext/libcouchbase/tools/common/my_inttypes.h
654
687
  - ext/libcouchbase/tools/common/options.cc
655
688
  - ext/libcouchbase/tools/common/options.h
656
689
  - ext/libcouchbase/tools/docgen/docgen.h