couchbase 3.2.0 → 3.2.4
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +24 -18
- package/binding.gyp +88 -85
- package/deps/lcb/CMakeLists.txt +1 -1
- package/deps/lcb/CONTRIBUTING.md +1 -1
- package/deps/lcb/README.markdown +2 -2
- package/deps/lcb/RELEASE_NOTES.markdown +99 -14
- package/deps/lcb/cmake/Modules/GetVersionInfo.cmake +1 -1
- package/deps/lcb/contrib/cbsasl/src/scram-sha/scram_utils.cc +22 -26
- package/deps/lcb/contrib/lcb-jsoncpp/lcb-jsoncpp.cpp +20 -7
- package/deps/lcb/doc/Doxyfile +1 -1
- package/deps/lcb/example/CMakeLists.txt +4 -4
- package/deps/lcb/example/libuvdirect/main.c +39 -12
- package/deps/lcb/example/minimal/durability.cc +149 -0
- package/deps/lcb/example/minimal/query.c +11 -9
- package/deps/lcb/gyp_config/common/libcouchbase/configuration.h +3 -3
- package/deps/lcb/gyp_config/linux/arm64/config.h +243 -0
- package/deps/lcb/include/libcouchbase/couchbase.h +80 -5
- package/deps/lcb/include/libcouchbase/error.h +2 -0
- package/deps/lcb/include/libcouchbase/ixmgmt.h +15 -10
- package/deps/lcb/include/libcouchbase/tracing.h +2 -2
- package/deps/lcb/include/memcached/protocol_binary.h +21 -0
- package/deps/lcb/libcouchbase.gyp +347 -349
- package/deps/lcb/packaging/deb/control +1 -1
- package/deps/lcb/src/analytics/analytics_handle.cc +13 -5
- package/deps/lcb/src/analytics/analytics_handle.hh +29 -0
- package/deps/lcb/src/bootstrap.cc +6 -3
- package/deps/lcb/src/capi/cmd_analytics.cc +12 -1
- package/deps/lcb/src/capi/cmd_analytics.hh +30 -0
- package/deps/lcb/src/capi/cmd_counter.hh +23 -0
- package/deps/lcb/src/capi/cmd_exists.hh +24 -1
- package/deps/lcb/src/capi/cmd_get.hh +22 -0
- package/deps/lcb/src/capi/cmd_get_replica.hh +23 -0
- package/deps/lcb/src/capi/cmd_http.hh +7 -0
- package/deps/lcb/src/capi/cmd_query.cc +11 -1
- package/deps/lcb/src/capi/cmd_query.hh +31 -0
- package/deps/lcb/src/capi/cmd_remove.hh +23 -0
- package/deps/lcb/src/capi/cmd_search.cc +6 -0
- package/deps/lcb/src/capi/cmd_search.hh +23 -0
- package/deps/lcb/src/capi/cmd_store.hh +33 -21
- package/deps/lcb/src/capi/cmd_subdoc.hh +35 -0
- package/deps/lcb/src/capi/cmd_touch.hh +23 -0
- package/deps/lcb/src/capi/cmd_unlock.hh +23 -0
- package/deps/lcb/src/capi/cmd_view.hh +6 -0
- package/deps/lcb/src/capi/collection_qualifier.hh +2 -2
- package/deps/lcb/src/cntl.cc +45 -11
- package/deps/lcb/src/crypto.cc +2 -2
- package/deps/lcb/src/dns-srv.cc +5 -3
- package/deps/lcb/src/errmap.cc +5 -9
- package/deps/lcb/src/errmap.h +7 -3
- package/deps/lcb/src/handler.cc +24 -18
- package/deps/lcb/src/hostlist.h +2 -2
- package/deps/lcb/src/http/http-priv.h +2 -2
- package/deps/lcb/src/http/http.cc +5 -2
- package/deps/lcb/src/instance.cc +20 -11
- package/deps/lcb/src/internal.h +9 -0
- package/deps/lcb/src/lcbio/connect.cc +14 -2
- package/deps/lcb/src/lcbio/connect.h +2 -2
- package/deps/lcb/src/lcbio/ctx.cc +4 -2
- package/deps/lcb/src/lcbio/ioutils.cc +9 -10
- package/deps/lcb/src/lcbio/manager.cc +1 -1
- package/deps/lcb/src/mcserver/mcserver.cc +9 -6
- package/deps/lcb/src/mcserver/negotiate.cc +39 -17
- package/deps/lcb/src/n1ql/ixmgmt.cc +1 -2
- package/deps/lcb/src/n1ql/query_handle.cc +41 -19
- package/deps/lcb/src/n1ql/query_handle.hh +28 -1
- package/deps/lcb/src/operations/counter.cc +18 -5
- package/deps/lcb/src/operations/exists.cc +25 -4
- package/deps/lcb/src/operations/get.cc +39 -19
- package/deps/lcb/src/operations/get_replica.cc +28 -8
- package/deps/lcb/src/operations/observe.cc +1 -1
- package/deps/lcb/src/operations/ping.cc +8 -8
- package/deps/lcb/src/operations/pktfwd.cc +2 -1
- package/deps/lcb/src/operations/remove.cc +39 -22
- package/deps/lcb/src/operations/store.cc +18 -5
- package/deps/lcb/src/operations/subdoc.cc +18 -6
- package/deps/lcb/src/operations/touch.cc +34 -16
- package/deps/lcb/src/operations/unlock.cc +24 -5
- package/deps/lcb/src/packetutils.h +3 -2
- package/deps/lcb/src/retryq.cc +24 -5
- package/deps/lcb/src/search/search.cc +1 -0
- package/deps/lcb/src/search/search_handle.cc +30 -8
- package/deps/lcb/src/search/search_handle.hh +29 -0
- package/deps/lcb/src/settings.cc +1 -1
- package/deps/lcb/src/ssl/ssl_common.c +6 -7
- package/deps/lcb/src/tracing/span.cc +47 -14
- package/deps/lcb/src/tracing/tracer.cc +11 -2
- package/deps/lcb/src/tracing/tracing-internal.h +105 -93
- package/deps/lcb/src/utilities.cc +43 -0
- package/deps/lcb/src/utilities.h +53 -0
- package/deps/lcb/src/vbucket/vbucket.c +34 -33
- package/deps/lcb/src/views/view_handle.cc +13 -5
- package/deps/lcb/src/views/view_handle.hh +29 -0
- package/deps/lcb/tests/CMakeLists.txt +21 -0
- package/deps/lcb/tests/basic/t_ctlcodes.cc +24 -3
- package/deps/lcb/tests/basic/t_jsparse.cc +8 -0
- package/deps/lcb/tests/basic/t_n1qlstrings.cc +73 -0
- package/deps/lcb/tests/iotests/mock-environment.cc +30 -1
- package/deps/lcb/tests/iotests/mock-environment.h +49 -0
- package/deps/lcb/tests/iotests/mock-unit-test.cc +104 -6
- package/deps/lcb/tests/iotests/mock-unit-test.h +34 -0
- package/deps/lcb/tests/iotests/t_collections.cc +1 -1
- package/deps/lcb/tests/iotests/t_confmon.cc +4 -2
- package/deps/lcb/tests/iotests/t_get.cc +109 -7
- package/deps/lcb/tests/iotests/t_http.cc +9 -4
- package/deps/lcb/tests/iotests/t_lock.cc +18 -0
- package/deps/lcb/tests/iotests/t_mutate.cc +157 -63
- package/deps/lcb/tests/iotests/t_n1ql.cc +330 -33
- package/deps/lcb/tests/iotests/t_views.cc +1 -0
- package/deps/lcb/tests/iotests/testutil.cc +168 -0
- package/deps/lcb/tests/iotests/testutil.h +116 -0
- package/deps/lcb/tests/mocksupport/procutil.c +32 -28
- package/deps/lcb/tests/mocksupport/server.c +0 -1
- package/deps/lcb/tests/mocksupport/timeout.c +2 -2
- package/deps/lcb/tools/cbc.cc +7 -0
- package/dist/analyticsindexmanager.js +512 -524
- package/dist/binding.d.ts +3 -0
- package/dist/bindingutilities.js +4 -0
- package/dist/bucket.js +1 -1
- package/dist/bucketmanager.d.ts +31 -1
- package/dist/bucketmanager.js +194 -186
- package/dist/cluster.d.ts +7 -0
- package/dist/cluster.js +48 -38
- package/dist/collection.js +11 -17
- package/dist/collectionmanager.js +181 -197
- package/dist/connection.d.ts +3 -1
- package/dist/connection.js +27 -16
- package/dist/couchbase.d.ts +1 -0
- package/dist/couchbase.js +3 -13
- package/dist/datastructures.js +239 -310
- package/dist/diagnosticsexecutor.js +70 -85
- package/dist/errors.d.ts +70 -0
- package/dist/errors.js +96 -2
- package/dist/eventingfunctionmanager.d.ts +804 -0
- package/dist/eventingfunctionmanager.js +993 -0
- package/dist/httpexecutor.d.ts +2 -1
- package/dist/httpexecutor.js +30 -37
- package/dist/queryindexmanager.js +240 -266
- package/dist/scope.js +10 -4
- package/dist/sdspecs.d.ts +1 -1
- package/dist/searchexecutor.js +3 -0
- package/dist/searchindexmanager.js +240 -271
- package/dist/searchquery.d.ts +17 -0
- package/dist/searchquery.js +22 -1
- package/dist/searchtypes.d.ts +7 -2
- package/dist/searchtypes.js +2 -2
- package/dist/usermanager.js +251 -264
- package/dist/utilities.d.ts +2 -0
- package/dist/utilities.js +7 -2
- package/dist/viewexecutor.js +1 -1
- package/dist/viewindexmanager.js +131 -150
- package/package.json +1 -1
- package/src/addondata.cpp +58 -0
- package/src/addondata.h +40 -0
- package/src/binding.cpp +3 -1
- package/src/cas.h +2 -2
- package/src/connection.cpp +25 -178
- package/src/connection.h +8 -65
- package/src/connection_ops.cpp +57 -34
- package/src/constants.cpp +3 -0
- package/src/instance.cpp +235 -0
- package/src/instance.h +102 -0
- package/src/{connection_callbacks.cpp → instance_callbacks.cpp} +34 -34
- package/src/logger.cpp +11 -1
- package/src/logger.h +3 -0
- package/src/metrics.cpp +10 -0
- package/src/metrics.h +3 -0
- package/src/mutationtoken.h +2 -2
- package/src/opbuilder.h +13 -15
- package/src/respreader.cpp +1 -0
- package/src/respreader.h +6 -4
- package/src/tracespan.h +11 -11
- package/src/tracing.cpp +11 -0
- package/src/tracing.h +3 -0
- package/src/valueparser.h +5 -0
- package/deps/lcb/example/observe/durability.c +0 -110
@@ -288,6 +288,7 @@ bool Reader::parse(const char* beginDoc,
|
|
288
288
|
const char* endDoc,
|
289
289
|
Value& root,
|
290
290
|
bool collectComments) {
|
291
|
+
try {
|
291
292
|
if (!features_.allowComments_) {
|
292
293
|
collectComments = false;
|
293
294
|
}
|
@@ -324,6 +325,21 @@ bool Reader::parse(const char* beginDoc,
|
|
324
325
|
}
|
325
326
|
}
|
326
327
|
return successful;
|
328
|
+
} catch (const RuntimeError &e) {
|
329
|
+
Token token;
|
330
|
+
token.type_ = tokenError;
|
331
|
+
token.start_ = beginDoc;
|
332
|
+
token.end_ = endDoc;
|
333
|
+
addError(std::string("RuntimeError: ") + e.what(), token);
|
334
|
+
return false;
|
335
|
+
} catch (const LogicError &e) {
|
336
|
+
Token token;
|
337
|
+
token.type_ = tokenError;
|
338
|
+
token.start_ = beginDoc;
|
339
|
+
token.end_ = endDoc;
|
340
|
+
addError(std::string("LogicError: ") + e.what(), token);
|
341
|
+
return false;
|
342
|
+
}
|
327
343
|
}
|
328
344
|
|
329
345
|
bool Reader::readValue() {
|
@@ -2356,15 +2372,13 @@ RuntimeError::RuntimeError(std::string const& msg)
|
|
2356
2372
|
LogicError::LogicError(std::string const& msg)
|
2357
2373
|
: Exception(msg)
|
2358
2374
|
{}
|
2359
|
-
void throwRuntimeError(std::string const& )
|
2375
|
+
void throwRuntimeError(std::string const& msg)
|
2360
2376
|
{
|
2361
|
-
|
2362
|
-
// throw RuntimeError(msg);
|
2377
|
+
throw RuntimeError(msg);
|
2363
2378
|
}
|
2364
|
-
void throwLogicError(std::string const&)
|
2379
|
+
void throwLogicError(std::string const& msg)
|
2365
2380
|
{
|
2366
|
-
|
2367
|
-
// throw LogicError(msg);
|
2381
|
+
throw LogicError(msg);
|
2368
2382
|
}
|
2369
2383
|
|
2370
2384
|
// //////////////////////////////////////////////////////////////////
|
@@ -4019,7 +4033,6 @@ void FastWriter::enableYAMLCompatibility() { yamlCompatiblityEnabled_ = true; }
|
|
4019
4033
|
std::string FastWriter::write(const Value& root) {
|
4020
4034
|
document_ = "";
|
4021
4035
|
writeValue(root);
|
4022
|
-
document_ += "\n";
|
4023
4036
|
return document_;
|
4024
4037
|
}
|
4025
4038
|
|
package/deps/lcb/doc/Doxyfile
CHANGED
@@ -38,7 +38,7 @@ PROJECT_NAME = "Couchbase C Client"
|
|
38
38
|
# could be handy for archiving the generated documentation or if some version
|
39
39
|
# control system is used.
|
40
40
|
|
41
|
-
PROJECT_NUMBER = 3.2.
|
41
|
+
PROJECT_NUMBER = 3.2.4
|
42
42
|
|
43
43
|
# Using the PROJECT_BRIEF tag one can provide an optional one line description
|
44
44
|
# for a project that appears at the top of each page and should give viewer a
|
@@ -8,7 +8,7 @@ MACRO(ADD_EXAMPLE name dir linkspec incspec)
|
|
8
8
|
TARGET_LINK_LIBRARIES(${name} couchbase ${linkspec})
|
9
9
|
|
10
10
|
GET_TARGET_PROPERTY(_tmp_inc ${name} INCLUDE_DIRECTORIES)
|
11
|
-
LIST(APPEND
|
11
|
+
LIST(APPEND _tmp_inc ${incspec})
|
12
12
|
SET_TARGET_PROPERTIES(${name} PROPERTIES INCLUDE_DIRECTORIES "${_tmp_inc}")
|
13
13
|
ENDMACRO()
|
14
14
|
|
@@ -72,6 +72,9 @@ TARGET_LINK_LIBRARIES(subdoc-tombstone couchbase)
|
|
72
72
|
TARGET_LINK_LIBRARIES(subdoc-multi couchbase)
|
73
73
|
TARGET_LINK_LIBRARIES(subdoc-xattrs couchbase)
|
74
74
|
|
75
|
+
ADD_EXECUTABLE(durability minimal/durability.cc)
|
76
|
+
TARGET_LINK_LIBRARIES(durability couchbase)
|
77
|
+
|
75
78
|
ADD_EXECUTABLE(minimal minimal/minimal.c)
|
76
79
|
TARGET_LINK_LIBRARIES(minimal couchbase)
|
77
80
|
|
@@ -87,9 +90,6 @@ TARGET_LINK_LIBRARIES(g3cp couchbase)
|
|
87
90
|
ADD_EXECUTABLE(g3cp-async minimal/g3cp-async.c)
|
88
91
|
TARGET_LINK_LIBRARIES(g3cp-async couchbase)
|
89
92
|
|
90
|
-
ADD_EXECUTABLE(durability observe/durability.c)
|
91
|
-
TARGET_LINK_LIBRARIES(durability couchbase)
|
92
|
-
|
93
93
|
ADD_EXECUTABLE(management-eventing management/eventing.cc)
|
94
94
|
TARGET_LINK_LIBRARIES(management-eventing couchbase)
|
95
95
|
|
@@ -52,9 +52,17 @@ static void delete_timer()
|
|
52
52
|
uv_close((uv_handle_t *)&timer, timer_close_cb);
|
53
53
|
}
|
54
54
|
|
55
|
+
static void query_callback(lcb_INSTANCE *instance, int cbtype, const lcb_RESPQUERY *resp)
|
56
|
+
{
|
57
|
+
printf("invoke query callback: %s, final: %s\n", lcb_strerror_short(lcb_respquery_status(resp)),
|
58
|
+
lcb_respquery_is_final(resp) ? "true" : "false");
|
59
|
+
(void)instance;
|
60
|
+
(void)cbtype;
|
61
|
+
(void)resp;
|
62
|
+
}
|
63
|
+
|
55
64
|
static void bootstrap_callback(lcb_INSTANCE *instance, lcb_STATUS err)
|
56
65
|
{
|
57
|
-
lcb_CMDSTORE *cmd;
|
58
66
|
if (err != LCB_SUCCESS) {
|
59
67
|
fprintf(stderr, "bootstrap error: %s\n", lcb_strerror_short(err));
|
60
68
|
lcb_destroy_async(instance, NULL);
|
@@ -62,16 +70,35 @@ static void bootstrap_callback(lcb_INSTANCE *instance, lcb_STATUS err)
|
|
62
70
|
}
|
63
71
|
printf("successfully bootstrapped\n");
|
64
72
|
fflush(stdout);
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
73
|
+
{
|
74
|
+
/* Since we've got our configuration, let's go ahead and store a value */
|
75
|
+
lcb_CMDSTORE *cmd;
|
76
|
+
lcb_cmdstore_create(&cmd, LCB_STORE_UPSERT);
|
77
|
+
lcb_cmdstore_key(cmd, key, nkey);
|
78
|
+
lcb_cmdstore_value(cmd, val, nval);
|
79
|
+
err = lcb_store(instance, NULL, cmd);
|
80
|
+
lcb_cmdstore_destroy(cmd);
|
81
|
+
if (err != LCB_SUCCESS) {
|
82
|
+
fprintf(stderr, "failed to set up store request: %s\n", lcb_strerror_short(err));
|
83
|
+
lcb_destroy_async(instance, NULL);
|
84
|
+
return;
|
85
|
+
}
|
86
|
+
}
|
87
|
+
|
88
|
+
{
|
89
|
+
lcb_CMDQUERY *cmd;
|
90
|
+
lcb_cmdquery_create(&cmd);
|
91
|
+
const char *statement = "SELECT 'hello' AS greeting";
|
92
|
+
lcb_cmdquery_statement(cmd, statement, strlen(statement));
|
93
|
+
lcb_cmdquery_callback(cmd, query_callback);
|
94
|
+
err = lcb_query(instance, NULL, cmd);
|
95
|
+
lcb_cmdquery_destroy(cmd);
|
96
|
+
if (err != LCB_SUCCESS) {
|
97
|
+
fprintf(stderr, "failed to set up query request: %s\n", lcb_strerror_short(err));
|
98
|
+
lcb_destroy_async(instance, NULL);
|
99
|
+
return;
|
100
|
+
}
|
101
|
+
printf("scheduled query\n");
|
75
102
|
}
|
76
103
|
}
|
77
104
|
|
@@ -238,7 +265,7 @@ int main(int argc, char **argv)
|
|
238
265
|
nreq = nresp = atoi(argv[4]);
|
239
266
|
}
|
240
267
|
if (argc > 5) {
|
241
|
-
interval = atoi(argv[
|
268
|
+
interval = atoi(argv[5]);
|
242
269
|
}
|
243
270
|
/* Store the event base as the user cookie in our instance so that
|
244
271
|
* we may terminate the program when we're done */
|
@@ -0,0 +1,149 @@
|
|
1
|
+
/* -*- Mode: C; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
|
2
|
+
/*
|
3
|
+
* Copyright 2017-2020 Couchbase, Inc.
|
4
|
+
*
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
* you may not use this file except in compliance with the License.
|
7
|
+
* You may obtain a copy of the License at
|
8
|
+
*
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
*
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
* See the License for the specific language governing permissions and
|
15
|
+
* limitations under the License.
|
16
|
+
*/
|
17
|
+
|
18
|
+
#include <string>
|
19
|
+
#include <iostream>
|
20
|
+
#include <cstdlib>
|
21
|
+
|
22
|
+
#include <libcouchbase/couchbase.h>
|
23
|
+
|
24
|
+
static void die(const char *msg, lcb_STATUS err)
|
25
|
+
{
|
26
|
+
std::cerr << "[ERROR] " << msg << ": " << lcb_strerror_short(err) << "\n";
|
27
|
+
exit(EXIT_FAILURE);
|
28
|
+
}
|
29
|
+
|
30
|
+
static void store_with_observe_callback(lcb_INSTANCE *, int, const lcb_RESPSTORE *resp)
|
31
|
+
{
|
32
|
+
lcb_STATUS rc = lcb_respstore_status(resp);
|
33
|
+
int store_ok, exists_master, persisted_master;
|
34
|
+
uint16_t num_responses, num_replicated, num_persisted;
|
35
|
+
|
36
|
+
lcb_respstore_observe_stored(resp, &store_ok);
|
37
|
+
lcb_respstore_observe_master_exists(resp, &exists_master);
|
38
|
+
lcb_respstore_observe_master_persisted(resp, &persisted_master);
|
39
|
+
lcb_respstore_observe_num_responses(resp, &num_responses);
|
40
|
+
lcb_respstore_observe_num_replicated(resp, &num_replicated);
|
41
|
+
lcb_respstore_observe_num_persisted(resp, &num_persisted);
|
42
|
+
|
43
|
+
std::cout << "Got status of operation: " << lcb_strerror_short(rc) << "\n";
|
44
|
+
std::cout << "Stored: " << (store_ok ? "true" : "false") << "\n";
|
45
|
+
std::cout << "Number of round-trips: " << num_responses << "\n";
|
46
|
+
std::cout << "In memory on master: " << (exists_master ? "true" : "false") << "\n";
|
47
|
+
std::cout << "Persisted on master: " << (persisted_master ? "true" : "false") << "\n";
|
48
|
+
std::cout << "Nodes have value replicated: " << num_replicated << "\n";
|
49
|
+
std::cout << "Nodes have value persisted (including master): " << num_persisted << "\n";
|
50
|
+
}
|
51
|
+
|
52
|
+
static void do_store_with_observe_durability(lcb_INSTANCE *instance)
|
53
|
+
{
|
54
|
+
lcb_install_callback(instance, LCB_CALLBACK_STORE, reinterpret_cast<lcb_RESPCALLBACK>(store_with_observe_callback));
|
55
|
+
|
56
|
+
std::string key = "docid";
|
57
|
+
std::string value = "[1,2,3]";
|
58
|
+
|
59
|
+
// tag::durability[]
|
60
|
+
lcb_CMDSTORE *cmd;
|
61
|
+
lcb_cmdstore_create(&cmd, LCB_STORE_UPSERT);
|
62
|
+
lcb_cmdstore_key(cmd, key.data(), key.size());
|
63
|
+
lcb_cmdstore_value(cmd, value.data(), value.size());
|
64
|
+
lcb_cmdstore_durability_observe(cmd, -1, -1);
|
65
|
+
// end::durability[]
|
66
|
+
|
67
|
+
lcb_sched_enter(instance);
|
68
|
+
lcb_STATUS err = lcb_store(instance, nullptr, cmd);
|
69
|
+
lcb_cmdstore_destroy(cmd);
|
70
|
+
if (err != LCB_SUCCESS) {
|
71
|
+
printf("Unable to schedule store+durability operation: %s\n", lcb_strerror_short(err));
|
72
|
+
lcb_sched_fail(instance);
|
73
|
+
return;
|
74
|
+
}
|
75
|
+
lcb_sched_leave(instance);
|
76
|
+
lcb_wait(instance, LCB_WAIT_DEFAULT);
|
77
|
+
}
|
78
|
+
|
79
|
+
static void store_callback(lcb_INSTANCE *, int, const lcb_RESPSTORE *resp)
|
80
|
+
{
|
81
|
+
lcb_STATUS rc = lcb_respstore_status(resp);
|
82
|
+
std::cout << "Got status of operation: " << lcb_strerror_short(rc) << "\n";
|
83
|
+
}
|
84
|
+
|
85
|
+
static void do_store_with_server_durability(lcb_INSTANCE *instance)
|
86
|
+
{
|
87
|
+
lcb_install_callback(instance, LCB_CALLBACK_STORE, reinterpret_cast<lcb_RESPCALLBACK>(store_callback));
|
88
|
+
|
89
|
+
std::string key = "docid";
|
90
|
+
std::string value = "[1,2,3]";
|
91
|
+
|
92
|
+
lcb_CMDSTORE *cmd;
|
93
|
+
lcb_cmdstore_create(&cmd, LCB_STORE_UPSERT);
|
94
|
+
lcb_cmdstore_key(cmd, key.data(), key.size());
|
95
|
+
lcb_cmdstore_value(cmd, value.data(), value.size());
|
96
|
+
lcb_cmdstore_durability(cmd, LCB_DURABILITYLEVEL_MAJORITY);
|
97
|
+
|
98
|
+
lcb_sched_enter(instance);
|
99
|
+
lcb_STATUS err = lcb_store(instance, nullptr, cmd);
|
100
|
+
lcb_cmdstore_destroy(cmd);
|
101
|
+
if (err != LCB_SUCCESS) {
|
102
|
+
printf("Unable to schedule store+durability operation: %s\n", lcb_strerror_short(err));
|
103
|
+
lcb_sched_fail(instance);
|
104
|
+
return;
|
105
|
+
}
|
106
|
+
lcb_sched_leave(instance);
|
107
|
+
lcb_wait(instance, LCB_WAIT_DEFAULT);
|
108
|
+
}
|
109
|
+
|
110
|
+
int main(int, char **)
|
111
|
+
{
|
112
|
+
lcb_STATUS rc;
|
113
|
+
std::string connection_string = "couchbase://localhost";
|
114
|
+
std::string username = "Administrator";
|
115
|
+
std::string password = "password";
|
116
|
+
|
117
|
+
lcb_CREATEOPTS *create_options = nullptr;
|
118
|
+
lcb_createopts_create(&create_options, LCB_TYPE_BUCKET);
|
119
|
+
lcb_createopts_connstr(create_options, connection_string.data(), connection_string.size());
|
120
|
+
lcb_createopts_credentials(create_options, username.data(), username.size(), password.data(), password.size());
|
121
|
+
|
122
|
+
lcb_INSTANCE *instance;
|
123
|
+
rc = lcb_create(&instance, create_options);
|
124
|
+
lcb_createopts_destroy(create_options);
|
125
|
+
if (rc != LCB_SUCCESS) {
|
126
|
+
die("Couldn't create couchbase handle", rc);
|
127
|
+
}
|
128
|
+
|
129
|
+
rc = lcb_connect(instance);
|
130
|
+
if (rc != LCB_SUCCESS) {
|
131
|
+
die("Couldn't schedule connection", rc);
|
132
|
+
}
|
133
|
+
|
134
|
+
lcb_wait(instance, LCB_WAIT_DEFAULT);
|
135
|
+
|
136
|
+
rc = lcb_get_bootstrap_status(instance);
|
137
|
+
if (rc != LCB_SUCCESS) {
|
138
|
+
die("Couldn't bootstrap from cluster", rc);
|
139
|
+
}
|
140
|
+
|
141
|
+
std::cout << "--- Performing store with observe-based durability check\n";
|
142
|
+
do_store_with_observe_durability(instance);
|
143
|
+
|
144
|
+
std::cout << "--- Performing store server-side durability check\n";
|
145
|
+
do_store_with_server_durability(instance);
|
146
|
+
|
147
|
+
lcb_destroy(instance);
|
148
|
+
return 0;
|
149
|
+
}
|
@@ -71,7 +71,7 @@ static void row_callback(lcb_INSTANCE *instance, int type, const lcb_RESPQUERY *
|
|
71
71
|
|
72
72
|
lcb_respquery_row(resp, &row, &nrow);
|
73
73
|
ln2space(row, nrow);
|
74
|
-
fprintf(stderr, "[\x1b[%dmQUERY\x1b[0m] %s, (
|
74
|
+
fprintf(stderr, "[\x1b[%dmQUERY\x1b[0m] %s, (size=%d) %.*s\n", err2color(rc), lcb_strerror_short(rc), (int)nrow,
|
75
75
|
(int)nrow, row);
|
76
76
|
if (lcb_respquery_is_final(resp)) {
|
77
77
|
fprintf(stderr, "\n");
|
@@ -120,7 +120,6 @@ static void sigint_handler(int unused)
|
|
120
120
|
|
121
121
|
int main(int argc, char *argv[])
|
122
122
|
{
|
123
|
-
lcb_STATUS err;
|
124
123
|
lcb_INSTANCE *instance;
|
125
124
|
char *bucket = NULL;
|
126
125
|
const char *key = "user:king_arthur";
|
@@ -171,11 +170,14 @@ int main(int argc, char *argv[])
|
|
171
170
|
}
|
172
171
|
|
173
172
|
{
|
174
|
-
|
175
|
-
|
176
|
-
cmd
|
177
|
-
|
178
|
-
check(
|
173
|
+
lcb_CMDQUERY *cmd;
|
174
|
+
char query[1024] = {0};
|
175
|
+
lcb_cmdquery_create(&cmd);
|
176
|
+
snprintf(query, sizeof(query), "CREATE PRIMARY INDEX ON `%s` USING gsi", bucket);
|
177
|
+
check(lcb_cmdquery_statement(cmd, query, strlen(query)), "set QUERY statement");
|
178
|
+
lcb_cmdquery_callback(cmd, row_callback);
|
179
|
+
check(lcb_query(instance, NULL, cmd), "schedule QUERY INDEX create operation");
|
180
|
+
lcb_cmdquery_destroy(cmd);
|
179
181
|
lcb_wait(instance, LCB_WAIT_DEFAULT);
|
180
182
|
}
|
181
183
|
|
@@ -189,12 +191,12 @@ int main(int argc, char *argv[])
|
|
189
191
|
while (running) {
|
190
192
|
lcb_CMDQUERY *cmd;
|
191
193
|
char query[1024] = {0};
|
192
|
-
const char *
|
194
|
+
const char *params = "[\"African Swallows\"]";
|
193
195
|
lcb_cmdquery_create(&cmd);
|
194
196
|
|
195
197
|
snprintf(query, sizeof(query), "SELECT * FROM `%s` WHERE $1 in interests LIMIT 1", bucket);
|
196
198
|
check(lcb_cmdquery_statement(cmd, query, strlen(query)), "set QUERY statement");
|
197
|
-
check(
|
199
|
+
check(lcb_cmdquery_positional_params(cmd, params, strlen(params)), "set QUERY positional parameters");
|
198
200
|
check(lcb_cmdquery_option(cmd, "pretty", strlen("pretty"), "false", strlen("false")),
|
199
201
|
"set QUERY 'pretty' option");
|
200
202
|
lcb_cmdquery_callback(cmd, row_callback);
|
@@ -33,7 +33,7 @@
|
|
33
33
|
*/
|
34
34
|
|
35
35
|
/** @brief libcouchbase version string */
|
36
|
-
#define LCB_VERSION_STRING "3.2.
|
36
|
+
#define LCB_VERSION_STRING "3.2.4-njs"
|
37
37
|
|
38
38
|
/**@brief libcouchbase hex version
|
39
39
|
*
|
@@ -50,12 +50,12 @@
|
|
50
50
|
* 2.1.3 | 0x020103
|
51
51
|
* 3.0.15 | 0x030015
|
52
52
|
*/
|
53
|
-
#define LCB_VERSION
|
53
|
+
#define LCB_VERSION 0x030204
|
54
54
|
|
55
55
|
/**@brief The SCM revision ID
|
56
56
|
* @see LCB_CNTL_CHANGESET
|
57
57
|
*/
|
58
|
-
#define LCB_VERSION_CHANGESET "
|
58
|
+
#define LCB_VERSION_CHANGESET "38cc0708dfcc5a706c6b21dc80bcd84f05890225"
|
59
59
|
|
60
60
|
/**@brief The client ID
|
61
61
|
*/
|
@@ -0,0 +1,243 @@
|
|
1
|
+
/* src/config.h. Generated from config.h.in by configure. */
|
2
|
+
/* src/config.h.in. Generated from configure.ac by autoheader. */
|
3
|
+
|
4
|
+
#if defined(_WIN32) && !defined(HAVE_CONFIG_H)
|
5
|
+
/* skip config.h contents on a non-autotools win32 build */
|
6
|
+
#include "win32/config.h"
|
7
|
+
#define CONFIG_H
|
8
|
+
#endif
|
9
|
+
|
10
|
+
#ifndef CONFIG_H
|
11
|
+
#define CONFIG_H
|
12
|
+
/* -*- Mode: C; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
|
13
|
+
/*
|
14
|
+
* Copyright 2010, 2011 Couchbase, Inc.
|
15
|
+
*
|
16
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
17
|
+
* you may not use this file except in compliance with the License.
|
18
|
+
* You may obtain a copy of the License at
|
19
|
+
*
|
20
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
21
|
+
*
|
22
|
+
* Unless required by applicable law or agreed to in writing, software
|
23
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
24
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
25
|
+
* See the License for the specific language governing permissions and
|
26
|
+
* limitations under the License.
|
27
|
+
*/
|
28
|
+
|
29
|
+
/*
|
30
|
+
* This file is generated by running configure. Any changes you make to this
|
31
|
+
* file will be overwritten the next time you run configure. If you want to
|
32
|
+
* make permanent changes to the file you should edit configure.ac instead.
|
33
|
+
* All platform-specific includes should be placed inside config_static.h
|
34
|
+
* to keep the config.h as small as possible. That allows us for easily
|
35
|
+
* use another build systems with a poor support for automake (like Windows)
|
36
|
+
*
|
37
|
+
* @author Trond Norbye
|
38
|
+
*/
|
39
|
+
|
40
|
+
#define HAVE_PKCS5_PBKDF2_HMAC 1
|
41
|
+
|
42
|
+
#define HAVE_ARPA_NAMESER_H 1
|
43
|
+
#define HAVE_RES_SEARCH 1
|
44
|
+
|
45
|
+
/* Define if building universal (internal helper macro) */
|
46
|
+
/* #undef AC_APPLE_UNIVERSAL_BUILD */
|
47
|
+
|
48
|
+
/* Build plugins */
|
49
|
+
/* #undef BUILD_PLUGINS */
|
50
|
+
|
51
|
+
/* gcov enabled */
|
52
|
+
/* #undef ENABLE_GCOV */
|
53
|
+
|
54
|
+
/* tcov enabled */
|
55
|
+
/* #undef ENABLE_TCOV */
|
56
|
+
|
57
|
+
/* Define to 1 if you have the `alarm' function. */
|
58
|
+
#define HAVE_ALARM 1
|
59
|
+
|
60
|
+
/* Define to 1 if you have the <arpa/inet.h> header file. */
|
61
|
+
#define HAVE_ARPA_INET_H 1
|
62
|
+
|
63
|
+
/* Define to 1 if you have the `clock_gettime' function. */
|
64
|
+
/* #undef HAVE_CLOCK_GETTIME */
|
65
|
+
|
66
|
+
/* We have CouchbaseMock.jar */
|
67
|
+
/* #undef HAVE_COUCHBASEMOCK */
|
68
|
+
|
69
|
+
/* Define to 1 if you have the <dlfcn.h> header file. */
|
70
|
+
#define HAVE_DLFCN_H 1
|
71
|
+
|
72
|
+
/* Enables SystemTap / DTrace Support */
|
73
|
+
/* #undef HAVE_DTRACE */
|
74
|
+
|
75
|
+
/* Define to 1 if you have the <event.h> header file. */
|
76
|
+
/* #undef HAVE_EVENT_H */
|
77
|
+
|
78
|
+
/* Define to 1 if you have the <ev.h> header file. */
|
79
|
+
/* #undef HAVE_EV_H */
|
80
|
+
|
81
|
+
/* Define to 1 if you have the <fcntl.h> header file. */
|
82
|
+
#define HAVE_FCNTL_H 1
|
83
|
+
|
84
|
+
/* Define to 1 if you have the `gethrtime' function. */
|
85
|
+
/* #undef HAVE_GETHRTIME */
|
86
|
+
|
87
|
+
/* Define to 1 if you have the `gettimeofday' function. */
|
88
|
+
#define HAVE_GETTIMEOFDAY 1
|
89
|
+
|
90
|
+
/* Have ntohll */
|
91
|
+
/* #undef HAVE_HTONLL */
|
92
|
+
|
93
|
+
/* Define to 1 if you have the <inttypes.h> header file. */
|
94
|
+
#define HAVE_INTTYPES_H 1
|
95
|
+
|
96
|
+
/* I will build libcouchbase_debug.so */
|
97
|
+
/* #undef HAVE_LIBCOUCHBASE_DEBUG */
|
98
|
+
|
99
|
+
/* We have libev3 */
|
100
|
+
/* #undef HAVE_LIBEV3 */
|
101
|
+
|
102
|
+
/* We have libev4 */
|
103
|
+
/* #undef HAVE_LIBEV4 */
|
104
|
+
|
105
|
+
/* We have libevent */
|
106
|
+
/* #undef HAVE_LIBEVENT */
|
107
|
+
|
108
|
+
/* We have libevent2 */
|
109
|
+
/* #undef HAVE_LIBEVENT2 */
|
110
|
+
|
111
|
+
/* Have non-standard place for libev header */
|
112
|
+
/* #undef HAVE_LIBEV_EV_H */
|
113
|
+
|
114
|
+
/* We have libuv */
|
115
|
+
/* #undef HAVE_LIBUV */
|
116
|
+
|
117
|
+
/* Define to 1 if you have the `xnet' library (-lxnet). */
|
118
|
+
/* #undef HAVE_LIBXNET */
|
119
|
+
|
120
|
+
/* We have libyajl2 */
|
121
|
+
/* #undef HAVE_LIBYAJL2 */
|
122
|
+
|
123
|
+
/* Define to 1 if you have the <limits.h> header file. */
|
124
|
+
#define HAVE_LIMITS_H 1
|
125
|
+
|
126
|
+
/* Define to 1 if you have the <mach/mach_time.h> header file. */
|
127
|
+
/* #undef HAVE_MACH_MACH_TIME_H */
|
128
|
+
|
129
|
+
/* Define to 1 if you have the <memory.h> header file. */
|
130
|
+
#define HAVE_MEMORY_H 1
|
131
|
+
|
132
|
+
/* Define to 1 if you have the <netdb.h> header file. */
|
133
|
+
#define HAVE_NETDB_H 1
|
134
|
+
|
135
|
+
/* Define to 1 if you have the <netinet/in.h> header file. */
|
136
|
+
#define HAVE_NETINET_IN_H 1
|
137
|
+
|
138
|
+
/* Define to 1 if you have the `QueryPerformanceCounter' function. */
|
139
|
+
/* #undef HAVE_QUERYPERFORMANCECOUNTER */
|
140
|
+
|
141
|
+
/* Define to 1 if you have the `setitimer' function. */
|
142
|
+
#define HAVE_SETITIMER 1
|
143
|
+
|
144
|
+
/* Define to 1 if you have the <stdarg.h> header file. */
|
145
|
+
#define HAVE_STDARG_H 1
|
146
|
+
|
147
|
+
/* Define to 1 if you have the <stdint.h> header file. */
|
148
|
+
#define HAVE_STDINT_H 1
|
149
|
+
|
150
|
+
/* Define to 1 if you have the <stdlib.h> header file. */
|
151
|
+
#define HAVE_STDLIB_H 1
|
152
|
+
|
153
|
+
/* Define to 1 if you have the <strings.h> header file. */
|
154
|
+
#define HAVE_STRINGS_H 1
|
155
|
+
|
156
|
+
/* Define to 1 if you have the <string.h> header file. */
|
157
|
+
#define HAVE_STRING_H 1
|
158
|
+
|
159
|
+
/* Define to 1 if you have the <sys/sdt.h> header file. */
|
160
|
+
/* #undef HAVE_SYS_SDT_H */
|
161
|
+
|
162
|
+
/* Define to 1 if you have the <sys/socket.h> header file. */
|
163
|
+
#define HAVE_SYS_SOCKET_H 1
|
164
|
+
|
165
|
+
/* Define to 1 if you have the <sys/stat.h> header file. */
|
166
|
+
#define HAVE_SYS_STAT_H 1
|
167
|
+
|
168
|
+
/* Define to 1 if you have the <sys/time.h> header file. */
|
169
|
+
#define HAVE_SYS_TIME_H 1
|
170
|
+
|
171
|
+
/* Define to 1 if you have the <sys/types.h> header file. */
|
172
|
+
#define HAVE_SYS_TYPES_H 1
|
173
|
+
|
174
|
+
/* Define to 1 if you have the <sys/uio.h> header file. */
|
175
|
+
#define HAVE_SYS_UIO_H 1
|
176
|
+
|
177
|
+
/* Define to 1 if you have the <unistd.h> header file. */
|
178
|
+
#define HAVE_UNISTD_H 1
|
179
|
+
|
180
|
+
/* Define to 1 if you have the <winsock2.h> header file. */
|
181
|
+
/* #undef HAVE_WINSOCK2_H */
|
182
|
+
|
183
|
+
/* Define to 1 if you have the <ws2tcpip.h> header file. */
|
184
|
+
/* #undef HAVE_WS2TCPIP_H */
|
185
|
+
|
186
|
+
/* Define to the sub-directory in which libtool stores uninstalled libraries.
|
187
|
+
*/
|
188
|
+
#define LT_OBJDIR ".libs/"
|
189
|
+
|
190
|
+
/* Define to 1 if your C compiler doesn't accept -c and -o together. */
|
191
|
+
/* #undef NO_MINUS_C_MINUS_O */
|
192
|
+
|
193
|
+
/* Define to 1 if you have the ANSI C header files. */
|
194
|
+
#define STDC_HEADERS 1
|
195
|
+
|
196
|
+
/* Defined for systems where EAGAIN != EWOULDBLOCK */
|
197
|
+
/* #undef USE_EAGAIN */
|
198
|
+
|
199
|
+
/* Enable extensions on AIX 3, Interix. */
|
200
|
+
#ifndef _ALL_SOURCE
|
201
|
+
#define _ALL_SOURCE 1
|
202
|
+
#endif
|
203
|
+
/* Enable GNU extensions on systems that have them. */
|
204
|
+
#ifndef _GNU_SOURCE
|
205
|
+
#define _GNU_SOURCE 1
|
206
|
+
#endif
|
207
|
+
/* Enable threading extensions on Solaris. */
|
208
|
+
#ifndef _POSIX_PTHREAD_SEMANTICS
|
209
|
+
#define _POSIX_PTHREAD_SEMANTICS 1
|
210
|
+
#endif
|
211
|
+
/* Enable extensions on HP NonStop. */
|
212
|
+
#ifndef _TANDEM_SOURCE
|
213
|
+
#define _TANDEM_SOURCE 1
|
214
|
+
#endif
|
215
|
+
/* Enable general extensions on Solaris. */
|
216
|
+
#ifndef __EXTENSIONS__
|
217
|
+
#define __EXTENSIONS__ 1
|
218
|
+
#endif
|
219
|
+
|
220
|
+
/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
|
221
|
+
significant byte first (like Motorola and SPARC, unlike Intel). */
|
222
|
+
#if defined AC_APPLE_UNIVERSAL_BUILD
|
223
|
+
#if defined __BIG_ENDIAN__
|
224
|
+
#define WORDS_BIGENDIAN 1
|
225
|
+
#endif
|
226
|
+
#else
|
227
|
+
#ifndef WORDS_BIGENDIAN
|
228
|
+
/* # undef WORDS_BIGENDIAN */
|
229
|
+
#endif
|
230
|
+
#endif
|
231
|
+
|
232
|
+
/* Define to 1 if on MINIX. */
|
233
|
+
/* #undef _MINIX */
|
234
|
+
|
235
|
+
/* Define to 2 if the system does not provide POSIX.1 features except with
|
236
|
+
this defined. */
|
237
|
+
/* #undef _POSIX_1_SOURCE */
|
238
|
+
|
239
|
+
/* Define to 1 if you need to in order for `stat' and other things to work. */
|
240
|
+
/* #undef _POSIX_SOURCE */
|
241
|
+
|
242
|
+
#include "config_static.h"
|
243
|
+
#endif
|