libcouchbase 1.0.4 → 1.1.0
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.
- checksums.yaml +4 -4
- data/.travis.yml +11 -8
- data/ext/libcouchbase/CMakeLists.txt +1 -1
- data/ext/libcouchbase/README.markdown +38 -6
- data/ext/libcouchbase/RELEASE_NOTES.markdown +151 -0
- data/ext/libcouchbase/cmake/Modules/GenerateConfigDotH.cmake +2 -2
- data/ext/libcouchbase/cmake/Modules/GetVersionInfo.cmake +3 -3
- data/ext/libcouchbase/cmake/source_files.cmake +1 -0
- data/ext/libcouchbase/contrib/cJSON/cJSON.c +686 -288
- data/ext/libcouchbase/contrib/cJSON/cJSON.h +0 -0
- data/ext/libcouchbase/contrib/cbsasl/src/hash.c +17 -17
- data/ext/libcouchbase/contrib/cliopts/cliopts.c +76 -0
- data/ext/libcouchbase/contrib/cliopts/cliopts.h +66 -15
- data/ext/libcouchbase/contrib/genhash/genhash.c +1 -2
- data/ext/libcouchbase/contrib/lcb-jsoncpp/lcb-jsoncpp.cpp +4 -3
- data/ext/libcouchbase/example/instancepool/main.cc +12 -2
- data/ext/libcouchbase/example/libeventdirect/main.c +99 -25
- data/ext/libcouchbase/example/minimal/minimal.c +7 -5
- data/ext/libcouchbase/example/observe/durability.c +102 -0
- data/ext/libcouchbase/example/observe/observe.c +19 -6
- data/ext/libcouchbase/example/subdoc/subdoc-xattrs.c +1 -2
- data/ext/libcouchbase/include/libcouchbase/cntl-private.h +6 -8
- data/ext/libcouchbase/include/libcouchbase/cntl.h +84 -64
- data/ext/libcouchbase/include/libcouchbase/couchbase.h +295 -78
- data/ext/libcouchbase/include/libcouchbase/deprecated.h +2 -2
- data/ext/libcouchbase/include/libcouchbase/error.h +1 -1
- data/ext/libcouchbase/include/libcouchbase/iops.h +9 -9
- data/ext/libcouchbase/include/libcouchbase/ixmgmt.h +2 -2
- data/ext/libcouchbase/include/libcouchbase/n1ql.h +69 -7
- data/ext/libcouchbase/include/libcouchbase/vbucket.h +17 -0
- data/ext/libcouchbase/include/libcouchbase/views.h +3 -3
- data/ext/libcouchbase/include/memcached/protocol_binary.h +62 -1
- data/ext/libcouchbase/packaging/deb/control +1 -1
- data/ext/libcouchbase/packaging/rpm/libcouchbase.spec.in +37 -36
- data/ext/libcouchbase/src/bootstrap.cc +22 -8
- data/ext/libcouchbase/src/bucketconfig/bc_cccp.cc +1 -1
- data/ext/libcouchbase/src/bucketconfig/bc_http.cc +0 -1
- data/ext/libcouchbase/src/bucketconfig/confmon.cc +13 -8
- data/ext/libcouchbase/src/callbacks.c +2 -0
- data/ext/libcouchbase/src/cntl.cc +28 -17
- data/ext/libcouchbase/src/dns-srv.cc +1 -2
- data/ext/libcouchbase/src/dump.cc +4 -0
- data/ext/libcouchbase/src/errmap.h +89 -16
- data/ext/libcouchbase/src/handler.cc +28 -11
- data/ext/libcouchbase/src/http/http-priv.h +4 -1
- data/ext/libcouchbase/src/http/http.cc +3 -0
- data/ext/libcouchbase/src/instance.cc +1 -1
- data/ext/libcouchbase/src/internal.h +1 -0
- data/ext/libcouchbase/src/lcbio/connect.cc +2 -3
- data/ext/libcouchbase/src/lcbio/manager.cc +2 -2
- data/ext/libcouchbase/src/lcbio/ssl.h +10 -0
- data/ext/libcouchbase/src/mc/mcreq.c +8 -0
- data/ext/libcouchbase/src/mcserver/mcserver.cc +14 -1
- data/ext/libcouchbase/src/n1ql/ixmgmt.cc +0 -3
- data/ext/libcouchbase/src/n1ql/n1ql.cc +22 -29
- data/ext/libcouchbase/src/n1ql/params.cc +46 -1
- data/ext/libcouchbase/src/newconfig.cc +4 -4
- data/ext/libcouchbase/src/operations/durability-seqno.cc +4 -0
- data/ext/libcouchbase/src/operations/durability.cc +3 -0
- data/ext/libcouchbase/src/operations/ping.cc +315 -0
- data/ext/libcouchbase/src/operations/stats.cc +10 -0
- data/ext/libcouchbase/src/operations/subdoc.cc +13 -1
- data/ext/libcouchbase/src/retrychk.cc +1 -0
- data/ext/libcouchbase/src/settings.c +2 -0
- data/ext/libcouchbase/src/settings.h +13 -7
- data/ext/libcouchbase/src/ssl/ssl_c.c +28 -2
- data/ext/libcouchbase/src/ssl/ssl_common.c +3 -0
- data/ext/libcouchbase/src/ssl/ssl_e.c +15 -1
- data/ext/libcouchbase/src/ssl/ssl_iot_common.h +3 -1
- data/ext/libcouchbase/src/timings.c +0 -1
- data/ext/libcouchbase/src/vbucket/vbucket.c +49 -1
- data/ext/libcouchbase/tests/iotests/mock-environment.cc +58 -40
- data/ext/libcouchbase/tests/iotests/mock-environment.h +23 -4
- data/ext/libcouchbase/tests/iotests/mock-unit-test.h +8 -8
- data/ext/libcouchbase/tests/iotests/t_behavior.cc +5 -5
- data/ext/libcouchbase/tests/iotests/t_durability.cc +50 -0
- data/ext/libcouchbase/tests/iotests/t_eerrs.cc +4 -2
- data/ext/libcouchbase/tests/iotests/t_errmap.cc +6 -3
- data/ext/libcouchbase/tests/iotests/t_lock.cc +5 -6
- data/ext/libcouchbase/tests/iotests/t_misc.cc +44 -0
- data/ext/libcouchbase/tests/iotests/t_serverops.cc +1 -0
- data/ext/libcouchbase/tests/iotests/t_subdoc.cc +28 -0
- data/ext/libcouchbase/tests/iotests/t_views.cc +22 -10
- data/ext/libcouchbase/tools/CMakeLists.txt +21 -1
- data/ext/libcouchbase/tools/cbc-handlers.h +23 -3
- data/ext/libcouchbase/tools/cbc-n1qlback.cc +1 -1
- data/ext/libcouchbase/tools/cbc-pillowfight.cc +126 -26
- data/ext/libcouchbase/tools/cbc-proxy.cc +403 -0
- data/ext/libcouchbase/tools/cbc-subdoc.cc +826 -0
- data/ext/libcouchbase/tools/cbc.cc +149 -37
- data/ext/libcouchbase/tools/common/options.h +5 -2
- data/ext/libcouchbase/tools/linenoise/linenoise.c +15 -15
- data/lib/libcouchbase.rb +4 -0
- data/lib/libcouchbase/bucket.rb +51 -0
- data/lib/libcouchbase/connection.rb +100 -13
- data/lib/libcouchbase/ext/libcouchbase.rb +40 -0
- data/lib/libcouchbase/ext/libcouchbase/cmdsubdoc.rb +13 -1
- data/lib/libcouchbase/ext/libcouchbase/enums.rb +2 -1
- data/lib/libcouchbase/ext/libcouchbase/sdspec.rb +5 -0
- data/lib/libcouchbase/subdoc_request.rb +129 -0
- data/lib/libcouchbase/version.rb +1 -1
- data/spec/bucket_spec.rb +15 -1
- data/spec/connection_spec.rb +1 -1
- data/spec/subdoc_spec.rb +192 -0
- metadata +13 -4
- data/ext/libcouchbase/.travis.yml +0 -19
|
@@ -225,9 +225,9 @@ lcb_error_t lcb_verify_struct_size(lcb_uint32_t id, lcb_uint32_t version,
|
|
|
225
225
|
/**@deprecated Initial connections are always attempted */
|
|
226
226
|
#define LCB_CNTL_SKIP_CONFIGURATION_ERRORS_ON_CONNECT 0x13
|
|
227
227
|
|
|
228
|
-
/**@deprecated
|
|
228
|
+
/**@deprecated Use error classifiers */
|
|
229
229
|
#define lcb_is_error_enomem(a) ((a == LCB_CLIENT_ENOMEM) || (a == LCB_ENOMEM))
|
|
230
|
-
/**@deprecated
|
|
230
|
+
/**@deprecated Use error classifiers */
|
|
231
231
|
#define lcb_is_error_etmpfail(a) ((a == LCB_CLIENT_ETMPFAIL) || (a == LCB_ETMPFAIL))
|
|
232
232
|
|
|
233
233
|
typedef enum {
|
|
@@ -532,7 +532,7 @@ typedef enum {
|
|
|
532
532
|
LCB_MAX_ERROR = 0x1000
|
|
533
533
|
} lcb_error_t;
|
|
534
534
|
|
|
535
|
-
/** @deprecated
|
|
535
|
+
/** @deprecated Use new, less ambiguous identifier (@ref LCB_CLIENT_ENOCONF) */
|
|
536
536
|
#define LCB_CLIENT_ETMPFAIL LCB_CLIENT_ENOCONF
|
|
537
537
|
|
|
538
538
|
/** @brief If the error is a result of bad input */
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* -*- Mode: C; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
|
|
2
2
|
/*
|
|
3
|
-
* Copyright
|
|
3
|
+
* Copyright 2017 Couchbase, Inc.
|
|
4
4
|
*
|
|
5
5
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
6
|
* you may not use this file except in compliance with the License.
|
|
@@ -313,20 +313,20 @@ typedef int (*lcb_ioE_connect_fn)
|
|
|
313
313
|
const struct sockaddr *dst,
|
|
314
314
|
unsigned int addrlen);
|
|
315
315
|
|
|
316
|
-
/** @
|
|
316
|
+
/** @internal */
|
|
317
317
|
typedef int (*lcb_ioE_bind_fn)
|
|
318
318
|
(lcb_io_opt_t iops,
|
|
319
319
|
lcb_socket_t sock,
|
|
320
320
|
const struct sockaddr *srcaddr,
|
|
321
321
|
unsigned int addrlen);
|
|
322
322
|
|
|
323
|
-
/** @
|
|
323
|
+
/** @internal */
|
|
324
324
|
typedef int (*lcb_ioE_listen_fn)
|
|
325
325
|
(lcb_io_opt_t iops,
|
|
326
326
|
lcb_socket_t bound_sock,
|
|
327
327
|
unsigned int queuelen);
|
|
328
328
|
|
|
329
|
-
/** @
|
|
329
|
+
/** @internal */
|
|
330
330
|
typedef lcb_socket_t (*lcb_ioE_accept_fn)
|
|
331
331
|
(lcb_io_opt_t iops,
|
|
332
332
|
lcb_socket_t lsnsock);
|
|
@@ -338,7 +338,7 @@ typedef void (*lcb_ioE_close_fn)
|
|
|
338
338
|
|
|
339
339
|
|
|
340
340
|
/**
|
|
341
|
-
* While checking the socket, treat pending data as an
|
|
341
|
+
* While checking the socket, treat pending data as an _error_.
|
|
342
342
|
* This flag will be _missing_ if the socket participates in a protocol
|
|
343
343
|
* where unsolicited data is possible.
|
|
344
344
|
*
|
|
@@ -976,12 +976,12 @@ lcb_iops_wire_bsd_impl2(lcb_bsd_procs *procs, int version);
|
|
|
976
976
|
* @committed
|
|
977
977
|
*/
|
|
978
978
|
typedef enum {
|
|
979
|
-
LCB_IO_OPS_INVALID = 0x00, /**< @
|
|
980
|
-
LCB_IO_OPS_DEFAULT = 0x01, /**< @
|
|
979
|
+
LCB_IO_OPS_INVALID = 0x00, /**< @internal */
|
|
980
|
+
LCB_IO_OPS_DEFAULT = 0x01, /**< @internal */
|
|
981
981
|
|
|
982
982
|
/** Integrate with the libevent loop. See lcb_create_libevent_io_opts() */
|
|
983
983
|
LCB_IO_OPS_LIBEVENT = 0x02,
|
|
984
|
-
LCB_IO_OPS_WINSOCK = 0x03, /**< @
|
|
984
|
+
LCB_IO_OPS_WINSOCK = 0x03, /**< @internal */
|
|
985
985
|
LCB_IO_OPS_LIBEV = 0x04,
|
|
986
986
|
LCB_IO_OPS_SELECT = 0x05,
|
|
987
987
|
LCB_IO_OPS_WINIOCP = 0x06,
|
|
@@ -1000,7 +1000,7 @@ typedef struct { const char *sofile; const char *symbol; void *cookie; } lcb_IOC
|
|
|
1000
1000
|
typedef struct { lcb_io_create_fn create; void *cookie; } lcb_IOCREATEOPS_FUNCTIONPOINTER;
|
|
1001
1001
|
#endif
|
|
1002
1002
|
|
|
1003
|
-
/** @
|
|
1003
|
+
/** @uncommitted */
|
|
1004
1004
|
struct lcb_create_io_ops_st {
|
|
1005
1005
|
int version;
|
|
1006
1006
|
union {
|
|
@@ -103,14 +103,14 @@ typedef struct {
|
|
|
103
103
|
} lcb_N1XSPEC;
|
|
104
104
|
|
|
105
105
|
/** Input/Output flag. The index is the primary index for the bucket */
|
|
106
|
-
#define LCB_N1XSPEC_F_PRIMARY 1<<16
|
|
106
|
+
#define LCB_N1XSPEC_F_PRIMARY (1 << 16)
|
|
107
107
|
|
|
108
108
|
/**
|
|
109
109
|
* Input flag for creation. Defer the index building until later. This may
|
|
110
110
|
* be used to accelerate the building of multiple indexes, so that the index
|
|
111
111
|
* builder can construct all indexes by scanning items only once
|
|
112
112
|
*/
|
|
113
|
-
#define LCB_N1XSPEC_F_DEFER 1<<17
|
|
113
|
+
#define LCB_N1XSPEC_F_DEFER (1 << 17)
|
|
114
114
|
|
|
115
115
|
/**
|
|
116
116
|
* Input for index type. It's best to just leave this value to 0 (DEFAULT)
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Copyright
|
|
2
|
+
* Copyright 2017 Couchbase, Inc.
|
|
3
3
|
*
|
|
4
4
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
5
|
* you may not use this file except in compliance with the License.
|
|
@@ -97,7 +97,7 @@ lcb_n1p_free(lcb_N1QLPARAMS *params);
|
|
|
97
97
|
/** Query is a statement string */
|
|
98
98
|
#define LCB_N1P_QUERY_STATEMENT 1
|
|
99
99
|
|
|
100
|
-
/** @
|
|
100
|
+
/** @internal */
|
|
101
101
|
#define LCB_N1P_QUERY_PREPARED 2
|
|
102
102
|
|
|
103
103
|
/**
|
|
@@ -112,6 +112,7 @@ LIBCOUCHBASE_API
|
|
|
112
112
|
lcb_error_t
|
|
113
113
|
lcb_n1p_setquery(lcb_N1QLPARAMS *params, const char *qstr, size_t nqstr, int type);
|
|
114
114
|
|
|
115
|
+
/** Shortcut to set NUL-terminated string as statement via @ref lcb_n1p_setquery */
|
|
115
116
|
#define lcb_n1p_setstmtz(params, qstr) \
|
|
116
117
|
lcb_n1p_setquery(params, qstr, -1, LCB_N1P_QUERY_STATEMENT)
|
|
117
118
|
|
|
@@ -128,6 +129,7 @@ lcb_error_t
|
|
|
128
129
|
lcb_n1p_namedparam(lcb_N1QLPARAMS *params, const char *name, size_t n_name,
|
|
129
130
|
const char *value, size_t n_value);
|
|
130
131
|
|
|
132
|
+
/** Shortcut to set NUL-terminated string as named param via @ref lcb_n1p_namedparam */
|
|
131
133
|
#define lcb_n1p_namedparamz(params, name, value) \
|
|
132
134
|
lcb_n1p_namedparam(params, name, -1, value, -1)
|
|
133
135
|
|
|
@@ -141,6 +143,66 @@ LIBCOUCHBASE_API
|
|
|
141
143
|
lcb_error_t
|
|
142
144
|
lcb_n1p_posparam(lcb_N1QLPARAMS *params, const char *value, size_t n_value);
|
|
143
145
|
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* Marks query as read-only.
|
|
149
|
+
*
|
|
150
|
+
* If the user knows the request is only ever a select, for security
|
|
151
|
+
* reasons it can make sense to tell the server this thing is readonly
|
|
152
|
+
* and it will prevent mutations from happening.
|
|
153
|
+
*
|
|
154
|
+
* If readonly is set, then the following statements are not allowed:
|
|
155
|
+
* * CREATE INDEX
|
|
156
|
+
* * DROP INDEX
|
|
157
|
+
* * INSERT
|
|
158
|
+
* * MERGE
|
|
159
|
+
* * UPDATE
|
|
160
|
+
* * UPSERT
|
|
161
|
+
* * DELETE
|
|
162
|
+
*
|
|
163
|
+
* @param params the params object
|
|
164
|
+
* @param readonly if non-zero, the query will be read-only
|
|
165
|
+
*/
|
|
166
|
+
LIBCOUCHBASE_API
|
|
167
|
+
lcb_error_t
|
|
168
|
+
lcb_n1p_readonly(lcb_N1QLPARAMS *params, int readonly);
|
|
169
|
+
|
|
170
|
+
/**
|
|
171
|
+
* Sets maximum buffered channel size between the indexer client
|
|
172
|
+
* and the query service for index scans.
|
|
173
|
+
*
|
|
174
|
+
* This parameter controls when to use scan backfill. Use 0 or
|
|
175
|
+
* a negative number to disable.
|
|
176
|
+
*
|
|
177
|
+
* @param params the params object
|
|
178
|
+
* @param scancap channel size
|
|
179
|
+
*/
|
|
180
|
+
LIBCOUCHBASE_API
|
|
181
|
+
lcb_error_t
|
|
182
|
+
lcb_n1p_scancap(lcb_N1QLPARAMS *params, int scancap);
|
|
183
|
+
|
|
184
|
+
/**
|
|
185
|
+
* Sets maximum number of items each execution operator can buffer
|
|
186
|
+
* between various operators.
|
|
187
|
+
*
|
|
188
|
+
* @param params the params object
|
|
189
|
+
* @param pipelinecap number of items
|
|
190
|
+
*/
|
|
191
|
+
LIBCOUCHBASE_API
|
|
192
|
+
lcb_error_t
|
|
193
|
+
lcb_n1p_pipelinecap(lcb_N1QLPARAMS *params, int pipelinecap);
|
|
194
|
+
|
|
195
|
+
/**
|
|
196
|
+
* Sets the number of items execution operators can batch for
|
|
197
|
+
* fetch from the KV.
|
|
198
|
+
*
|
|
199
|
+
* @param params the params object
|
|
200
|
+
* @param pipelinebatch number of items
|
|
201
|
+
*/
|
|
202
|
+
LIBCOUCHBASE_API
|
|
203
|
+
lcb_error_t
|
|
204
|
+
lcb_n1p_pipelinebatch(lcb_N1QLPARAMS *params, int pipelinebatch);
|
|
205
|
+
|
|
144
206
|
/**
|
|
145
207
|
* Set a query option
|
|
146
208
|
* @param params the params object
|
|
@@ -256,19 +318,19 @@ lcb_n1p_mkcmd(lcb_N1QLPARAMS *params, lcb_CMDN1QL *cmd);
|
|
|
256
318
|
* Prepare and cache the query if required. This may be used on frequently
|
|
257
319
|
* issued queries, so they perform better.
|
|
258
320
|
*/
|
|
259
|
-
#define LCB_CMDN1QL_F_PREPCACHE 1<<16
|
|
321
|
+
#define LCB_CMDN1QL_F_PREPCACHE (1 << 16)
|
|
260
322
|
|
|
261
|
-
/**
|
|
262
|
-
#define LCB_CMDN1QL_F_JSONQUERY 1<<17
|
|
323
|
+
/** The lcb_CMDN1QL::query member is an internal JSON structure. @internal */
|
|
324
|
+
#define LCB_CMDN1QL_F_JSONQUERY (1 << 17)
|
|
263
325
|
|
|
264
326
|
/**
|
|
265
327
|
* This is an analytics query. Use the `host` field to specify the host/port
|
|
266
328
|
* to target. When this flag is set, things like prepared queries and
|
|
267
329
|
* parametrized statements will not work.
|
|
268
330
|
*
|
|
269
|
-
* @
|
|
331
|
+
* @uncommitted
|
|
270
332
|
*/
|
|
271
|
-
#define LCB_CMDN1QL_F_CBASQUERY 1<<18
|
|
333
|
+
#define LCB_CMDN1QL_F_CBASQUERY (1 << 18)
|
|
272
334
|
|
|
273
335
|
/**
|
|
274
336
|
* Command structure for N1QL queries. Typically an application will use the
|
|
@@ -52,6 +52,7 @@ typedef enum {
|
|
|
52
52
|
LCBVB_SVCTYPE_IXADMIN, /**< Index administration */
|
|
53
53
|
LCBVB_SVCTYPE_N1QL, /**< N1QL Query */
|
|
54
54
|
LCBVB_SVCTYPE_FTS, /**< Fulltext */
|
|
55
|
+
LCBVB_SVCTYPE_CBAS, /**< Analytics Query */
|
|
55
56
|
LCBVB_SVCTYPE__MAX
|
|
56
57
|
} lcbvb_SVCTYPE;
|
|
57
58
|
|
|
@@ -75,9 +76,11 @@ typedef struct {
|
|
|
75
76
|
lcb_U16 ixadmin; /**< Indexing admin port (HTTP) */
|
|
76
77
|
lcb_U16 n1ql; /**< Query port */
|
|
77
78
|
lcb_U16 fts; /**< CBFT */
|
|
79
|
+
lcb_U16 cbas; /**< CBAS (Analytics) */
|
|
78
80
|
char *views_base_; /**< Views base URL */
|
|
79
81
|
char *query_base_; /**< N1QL base URL */
|
|
80
82
|
char *fts_base_;
|
|
83
|
+
char *cbas_base_;
|
|
81
84
|
char *hoststrs[LCBVB_SVCTYPE__MAX];
|
|
82
85
|
} lcbvb_SERVICES;
|
|
83
86
|
|
|
@@ -96,6 +99,7 @@ typedef struct {
|
|
|
96
99
|
char *viewpath; /**< Path prefix for view queries */
|
|
97
100
|
char *querypath; /**< Path prefix for n1ql queries */
|
|
98
101
|
char *ftspath; /**< Path prefix for fulltext queries */
|
|
102
|
+
char *cbaspath; /**< Path prefix for analytics queries */
|
|
99
103
|
unsigned nvbs; /**< Total number of vbuckets the server has assigned */
|
|
100
104
|
} lcbvb_SERVER;
|
|
101
105
|
|
|
@@ -117,6 +121,17 @@ typedef enum {
|
|
|
117
121
|
LCBVB_DIST_KETAMA = 1 /**< Ketama hashing ("memcached") bucket */
|
|
118
122
|
} lcbvb_DISTMODE;
|
|
119
123
|
|
|
124
|
+
typedef enum {
|
|
125
|
+
LCBVB_CAP_XATTR = 0x01,
|
|
126
|
+
LCBVB_CAP_CBHELLO = 0x02,
|
|
127
|
+
LCBVB_CAP_CCCP = 0x04,
|
|
128
|
+
LCBVB_CAP_COUCHAPI = 0x08,
|
|
129
|
+
LCBVB_CAP_DCP = 0x10,
|
|
130
|
+
LCBVB_CAP_NODES_EXT = 0x20,
|
|
131
|
+
LCBVB_CAP_TOUCH = 0x40,
|
|
132
|
+
LCBVB_CAP_XDCR_CHECKPOINTING = 0x80
|
|
133
|
+
} lcbvb_BUCKET_CAPABILITIES;
|
|
134
|
+
|
|
120
135
|
/**@volatile. ABI/API compatibility not guaranteed between versions.
|
|
121
136
|
* @brief Structure containing the configuration.*/
|
|
122
137
|
typedef struct lcbvb_CONFIG_st {
|
|
@@ -136,6 +151,7 @@ typedef struct lcbvb_CONFIG_st {
|
|
|
136
151
|
lcbvb_VBUCKET *ffvbuckets; /* fast-forward map */
|
|
137
152
|
lcbvb_CONTINUUM *continuum; /* ketama continuums */
|
|
138
153
|
int *randbuf; /* Used for random server selection */
|
|
154
|
+
long caps; /**< Server capabilities */
|
|
139
155
|
} lcbvb_CONFIG;
|
|
140
156
|
|
|
141
157
|
|
|
@@ -143,6 +159,7 @@ typedef struct lcbvb_CONFIG_st {
|
|
|
143
159
|
#define LCBVB_NDATASERVERS(cfg) (cfg)->ndatasrv
|
|
144
160
|
#define LCBVB_NREPLICAS(cfg) (cfg)->nrepl
|
|
145
161
|
#define LCBVB_DISTTYPE(cfg) (cfg)->dtype
|
|
162
|
+
#define LCBVB_CAPS(cfg) (cfg)->caps
|
|
146
163
|
#define LCBVB_GET_SERVER(conf, ix) ((conf)->servers + ix)
|
|
147
164
|
|
|
148
165
|
/**
|
|
@@ -57,14 +57,14 @@ typedef void (*lcb_VIEWQUERYCALLBACK)(lcb_t instance,
|
|
|
57
57
|
int cbtype, const lcb_RESPVIEWQUERY *row);
|
|
58
58
|
|
|
59
59
|
/** Set this flag to execute an actual get with each response */
|
|
60
|
-
#define LCB_CMDVIEWQUERY_F_INCLUDE_DOCS 1 << 16
|
|
60
|
+
#define LCB_CMDVIEWQUERY_F_INCLUDE_DOCS (1 << 16)
|
|
61
61
|
|
|
62
62
|
/**Set this flag to only parse the top level row, and not its constituent
|
|
63
63
|
* parts. Note this is incompatible with `F_INCLUDE_DOCS`*/
|
|
64
|
-
#define LCB_CMDVIEWQUERY_F_NOROWPARSE 1 << 17
|
|
64
|
+
#define LCB_CMDVIEWQUERY_F_NOROWPARSE (1 << 17)
|
|
65
65
|
|
|
66
66
|
/**This view is spatial. Modifies how the final view path will be constructed */
|
|
67
|
-
#define LCB_CMDVIEWQUERY_F_SPATIAL 1 << 18
|
|
67
|
+
#define LCB_CMDVIEWQUERY_F_SPATIAL (1 << 18)
|
|
68
68
|
|
|
69
69
|
/** Command structure for querying a view */
|
|
70
70
|
typedef struct {
|
|
@@ -99,7 +99,13 @@ extern "C"
|
|
|
99
99
|
PROTOCOL_BINARY_RESPONSE_DELTA_BADVAL = 0x06,
|
|
100
100
|
/** The server is not responsible for the requested vbucket */
|
|
101
101
|
PROTOCOL_BINARY_RESPONSE_NOT_MY_VBUCKET = 0x07,
|
|
102
|
+
/** Not connected to a bucket */
|
|
103
|
+
PROTOCOL_BINARY_RESPONSE_NO_BUCKET = 0x08,
|
|
104
|
+
/** The requested resource is locked */
|
|
105
|
+
PROTOCOL_BINARY_RESPONSE_LOCKED = 0x09,
|
|
102
106
|
|
|
107
|
+
/** The authentication context is stale. You should reauthenticate*/
|
|
108
|
+
PROTOCOL_BINARY_RESPONSE_AUTH_STALE = 0x1f,
|
|
103
109
|
/** Authentication failure (invalid user/password combination,
|
|
104
110
|
* OR an internal error in the authentication library. Could
|
|
105
111
|
* be a misconfigured SASL configuration. See server logs for
|
|
@@ -113,6 +119,10 @@ extern "C"
|
|
|
113
119
|
|
|
114
120
|
/** No access (could be opcode, value, bucket etc) */
|
|
115
121
|
PROTOCOL_BINARY_RESPONSE_EACCESS = 0x24,
|
|
122
|
+
/** The Couchbase cluster is currently initializing this
|
|
123
|
+
* node, and the Cluster manager has not yet granted all
|
|
124
|
+
* users access to the cluster. */
|
|
125
|
+
PROTOCOL_BINARY_RESPONSE_NOT_INITIALIZED = 0x25,
|
|
116
126
|
|
|
117
127
|
/** The server have no idea what this command is for */
|
|
118
128
|
PROTOCOL_BINARY_RESPONSE_UNKNOWN_COMMAND = 0x81,
|
|
@@ -136,6 +146,11 @@ extern "C"
|
|
|
136
146
|
* etc).
|
|
137
147
|
*/
|
|
138
148
|
PROTOCOL_BINARY_RESPONSE_ETMPFAIL = 0x86,
|
|
149
|
+
/**
|
|
150
|
+
* There is something wrong with the syntax of the provided
|
|
151
|
+
* XATTR.
|
|
152
|
+
*/
|
|
153
|
+
PROTOCOL_BINARY_RESPONSE_XATTR_EINVAL = 0x87,
|
|
139
154
|
|
|
140
155
|
/*
|
|
141
156
|
* Sub-document specific responses.
|
|
@@ -191,8 +206,53 @@ extern "C"
|
|
|
191
206
|
* found, but one or more path operations failed. Examine the individual
|
|
192
207
|
* lookup_result (MULTI_LOOKUP) / mutation_result (MULTI_MUTATION)
|
|
193
208
|
* structures for details. */
|
|
194
|
-
PROTOCOL_BINARY_RESPONSE_SUBDOC_MULTI_PATH_FAILURE = 0xcc
|
|
209
|
+
PROTOCOL_BINARY_RESPONSE_SUBDOC_MULTI_PATH_FAILURE = 0xcc,
|
|
195
210
|
|
|
211
|
+
/**
|
|
212
|
+
* The operation completed successfully, but operated on a deleted
|
|
213
|
+
* document.
|
|
214
|
+
*/
|
|
215
|
+
PROTOCOL_BINARY_RESPONSE_SUBDOC_SUCCESS_DELETED = 0xcd,
|
|
216
|
+
|
|
217
|
+
/**
|
|
218
|
+
* The combination of the subdoc flags for the xattrs doesn't make
|
|
219
|
+
* any sense
|
|
220
|
+
*/
|
|
221
|
+
PROTOCOL_BINARY_RESPONSE_SUBDOC_XATTR_INVALID_FLAG_COMBO = 0xce,
|
|
222
|
+
|
|
223
|
+
/**
|
|
224
|
+
* Only a single xattr key may be accessed at the same time.
|
|
225
|
+
*/
|
|
226
|
+
PROTOCOL_BINARY_RESPONSE_SUBDOC_XATTR_INVALID_KEY_COMBO = 0xcf,
|
|
227
|
+
|
|
228
|
+
/**
|
|
229
|
+
* The server has no knowledge of the requested macro
|
|
230
|
+
*/
|
|
231
|
+
PROTOCOL_BINARY_RESPONSE_SUBDOC_XATTR_UNKNOWN_MACRO = 0xd0,
|
|
232
|
+
|
|
233
|
+
/**
|
|
234
|
+
* The server has no knowledge of the requested virtual xattr
|
|
235
|
+
*/
|
|
236
|
+
PROTOCOL_BINARY_RESPONSE_SUBDOC_XATTR_UNKNOWN_VATTR = 0xd1,
|
|
237
|
+
|
|
238
|
+
/**
|
|
239
|
+
* Virtual xattrs can't be modified
|
|
240
|
+
*/
|
|
241
|
+
PROTOCOL_BINARY_RESPONSE_SUBDOC_XATTR_CANT_MODIFY_VATTR = 0xd2,
|
|
242
|
+
|
|
243
|
+
/**
|
|
244
|
+
* [For multi-path commands only] Specified key was found as a
|
|
245
|
+
* Deleted document, but one or more path operations
|
|
246
|
+
* failed. Examine the individual lookup_result (MULTI_LOOKUP) /
|
|
247
|
+
* mutation_result (MULTI_MUTATION) structures for details.
|
|
248
|
+
*/
|
|
249
|
+
PROTOCOL_BINARY_RESPONSE_SUBDOC_MULTI_PATH_FAILURE_DELETED = 0xd3,
|
|
250
|
+
|
|
251
|
+
/**
|
|
252
|
+
* According to the spec all xattr commands should come first,
|
|
253
|
+
* followed by the commands for the document body
|
|
254
|
+
*/
|
|
255
|
+
PROTOCOL_BINARY_RESPONSE_SUBDOC_INVALID_XATTR_ORDER = 0xd4
|
|
196
256
|
} protocol_binary_response_status;
|
|
197
257
|
|
|
198
258
|
/**
|
|
@@ -209,6 +269,7 @@ extern "C"
|
|
|
209
269
|
PROTOCOL_BINARY_CMD_DECREMENT = 0x06,
|
|
210
270
|
PROTOCOL_BINARY_CMD_FLUSH = 0x08,
|
|
211
271
|
PROTOCOL_BINARY_CMD_GETQ = 0x09 /* Used in tests */,
|
|
272
|
+
PROTOCOL_BINARY_CMD_NOOP = 0x0a,
|
|
212
273
|
PROTOCOL_BINARY_CMD_VERSION = 0x0b,
|
|
213
274
|
PROTOCOL_BINARY_CMD_APPEND = 0x0e,
|
|
214
275
|
PROTOCOL_BINARY_CMD_PREPEND = 0x0f,
|
|
@@ -64,7 +64,7 @@ Description: library for the Couchbase protocol, development files
|
|
|
64
64
|
Package: libcouchbase2-bin
|
|
65
65
|
Section: utils
|
|
66
66
|
Architecture: any
|
|
67
|
-
Depends: libcouchbase2-core (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends}
|
|
67
|
+
Depends: libcouchbase2-core (= ${binary:Version}), libcouchbase2-libevent (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends}
|
|
68
68
|
Conflicts: libcouchbase1-bin
|
|
69
69
|
Description: library for the Couchbase protocol
|
|
70
70
|
libcouchbase is a library implementing Couchbase protocol.
|
|
@@ -1,79 +1,80 @@
|
|
|
1
|
-
Summary:
|
|
1
|
+
Summary: Client and protocol library for the Couchbase project
|
|
2
2
|
Name: libcouchbase
|
|
3
3
|
Version: @VERSION@
|
|
4
4
|
Release: @RELEASE@%{?dist}
|
|
5
5
|
Vendor: Couchbase, Inc.
|
|
6
6
|
Packager: Couchbase SDK Team <support@couchbase.com>
|
|
7
|
-
License:
|
|
7
|
+
License: ASL 2.0
|
|
8
8
|
Group: System Environment/Libraries
|
|
9
|
-
|
|
9
|
+
BuildRequires: gcc, gcc-c++
|
|
10
10
|
BuildRequires: cmake >= 2.8.9
|
|
11
|
-
|
|
12
|
-
BuildRequires:
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
Source: @TARREDAS@.tar.gz
|
|
11
|
+
BuildRequires: pkgconfig(libevent) >= 2
|
|
12
|
+
BuildRequires: libev-devel >= 3
|
|
13
|
+
BuildRequires: openssl-devel
|
|
14
|
+
URL: https://developer.couchbase.com/server/other-products/release-notes-archives/c-sdk
|
|
15
|
+
Source: https://packages.couchbase.com/clients/c/@TARREDAS@.tar.gz
|
|
17
16
|
BuildRoot: %{_topdir}/build/@TARREDAS@
|
|
17
|
+
%if ! (0%{?rhel} && 0%{?rhel} <= 7)
|
|
18
|
+
Recommends: %{name}2-libevent%{_isa} = %{version}-%{release}
|
|
19
|
+
Suggests: %{name}2-libev%{_isa} = %{version}-%{release}
|
|
20
|
+
Suggests: %{name}2-tools%{_isa} = %{version}-%{release}
|
|
21
|
+
%endif
|
|
18
22
|
|
|
19
23
|
%description
|
|
20
24
|
This is the client and protocol library for Couchbase project.
|
|
21
25
|
|
|
22
26
|
%package -n %{name}2-libevent
|
|
23
27
|
Group: System Environment/Libraries
|
|
24
|
-
Summary: Couchbase
|
|
25
|
-
Requires: %{name}2-core = %{version}-%{release}
|
|
28
|
+
Summary: Couchbase client library - libevent IO back-end
|
|
29
|
+
Requires: %{name}2-core%{?_isa} = %{version}-%{release}
|
|
26
30
|
%description -n %{name}2-libevent
|
|
27
|
-
This package provides libevent
|
|
31
|
+
This package provides libevent back-end for libcouchbase
|
|
28
32
|
|
|
29
33
|
%package -n %{name}2-libev
|
|
30
34
|
Group: System Environment/Libraries
|
|
31
|
-
Summary: Couchbase
|
|
32
|
-
Requires: %{name}2-core = %{version}-%{release}
|
|
35
|
+
Summary: Couchbase client library - libev IO back-end
|
|
36
|
+
Requires: %{name}2-core%{?_isa} = %{version}-%{release}
|
|
33
37
|
%description -n %{name}2-libev
|
|
34
|
-
This package provides libev
|
|
38
|
+
This package provides libev back-end for libcouchbase
|
|
35
39
|
|
|
36
40
|
%package -n %{name}2-core
|
|
37
41
|
Group: System Environment/Libraries
|
|
38
|
-
Summary: Couchbase
|
|
39
|
-
Provides: %{name}2
|
|
42
|
+
Summary: Couchbase client library - core
|
|
43
|
+
Provides: %{name}2%{?_isa} = %{version}-%{release}
|
|
40
44
|
%description -n %{name}2-core
|
|
41
45
|
This package provides the core for libcouchbase. It contains an IO
|
|
42
46
|
implementation based on select(2). If preferred, you can install one
|
|
43
|
-
of the available
|
|
47
|
+
of the available back-ends (libcouchbase2-libevent or
|
|
44
48
|
libcouchbase2-libev). libcouchbase will automatically use the
|
|
45
|
-
installed
|
|
49
|
+
installed back-end. It is also possible to integrate another IO back-end
|
|
46
50
|
or write your own.
|
|
47
51
|
|
|
48
52
|
%package -n %{name}2-bin
|
|
49
53
|
Group: Development/Tools
|
|
50
54
|
Summary: Couchbase Client Tools
|
|
51
|
-
Requires: %{name}2-core = %{version}-%{release}
|
|
55
|
+
Requires: %{name}2-core%{?_isa} = %{version}-%{release}
|
|
52
56
|
%description -n %{name}2-bin
|
|
53
57
|
This is the CLI tools Couchbase project.
|
|
54
58
|
|
|
55
59
|
%package devel
|
|
56
60
|
Group: Development/Libraries
|
|
57
61
|
Summary: Couchbase Client & Protocol Library - Header files
|
|
58
|
-
Requires: %{name}2-core = %{version}-%{release}
|
|
62
|
+
Requires: %{name}2-core%{?_isa} = %{version}-%{release}
|
|
59
63
|
%description devel
|
|
60
64
|
Development files for the Couchbase Client & Protocol Library
|
|
61
65
|
|
|
62
66
|
%prep
|
|
63
|
-
%if 0%{?rhel} > 5 || 0%{?fedora} > 7
|
|
64
|
-
%define __lcb_cmake %cmake
|
|
65
|
-
%else
|
|
66
|
-
%define __lcb_cmake %cmake28
|
|
67
|
-
%endif
|
|
68
|
-
|
|
69
67
|
%setup -q -n @TARREDAS@
|
|
70
|
-
%
|
|
68
|
+
%cmake -DLCB_NO_MOCK=1 -DLCB_BUILD_LIBUV=OFF
|
|
71
69
|
|
|
72
70
|
%build
|
|
73
|
-
%
|
|
71
|
+
%make_build
|
|
74
72
|
|
|
75
73
|
%install
|
|
76
|
-
%
|
|
74
|
+
%make_install
|
|
75
|
+
|
|
76
|
+
%check
|
|
77
|
+
make test
|
|
77
78
|
|
|
78
79
|
%clean
|
|
79
80
|
%{__rm} -rf %{buildroot}
|
|
@@ -84,16 +85,16 @@ Development files for the Couchbase Client & Protocol Library
|
|
|
84
85
|
|
|
85
86
|
%files -n %{name}2-core
|
|
86
87
|
%defattr(-, root, root)
|
|
87
|
-
%{_libdir}
|
|
88
|
+
%{_libdir}/%{name}.so.*
|
|
88
89
|
%doc README.markdown LICENSE RELEASE_NOTES.markdown
|
|
89
90
|
|
|
90
91
|
%files -n %{name}2-libevent
|
|
91
92
|
%defattr(-, root, root)
|
|
92
|
-
%{_libdir}
|
|
93
|
+
%{_libdir}/%{name}_libevent.so
|
|
93
94
|
|
|
94
95
|
%files -n %{name}2-libev
|
|
95
96
|
%defattr(-, root, root)
|
|
96
|
-
%{_libdir}
|
|
97
|
+
%{_libdir}/%{name}_libev.so
|
|
97
98
|
|
|
98
99
|
%files -n %{name}2-bin
|
|
99
100
|
%defattr(-, root, root)
|
|
@@ -103,6 +104,6 @@ Development files for the Couchbase Client & Protocol Library
|
|
|
103
104
|
|
|
104
105
|
%files devel
|
|
105
106
|
%defattr(-, root, root)
|
|
106
|
-
%{_includedir}
|
|
107
|
-
%{_libdir}
|
|
108
|
-
%{_libdir}/pkgconfig
|
|
107
|
+
%{_includedir}/%{name}
|
|
108
|
+
%{_libdir}/%{name}.so
|
|
109
|
+
%{_libdir}/pkgconfig/%{name}.pc
|