couchbase 3.2.4 → 3.2.5
Sign up to get free protection for your applications and to get access to all the features.
- package/binding.gyp +5 -0
- package/deps/lcb/CMakeLists.txt +1 -1
- package/deps/lcb/RELEASE_NOTES.markdown +12 -0
- package/deps/lcb/cmake/Modules/GetVersionInfo.cmake +1 -1
- package/deps/lcb/doc/Doxyfile +1 -1
- package/deps/lcb/gyp_config/common/libcouchbase/configuration.h +3 -3
- package/deps/lcb/include/libcouchbase/couchbase.h +52 -0
- package/deps/lcb/include/libcouchbase/error.h +4 -1
- package/deps/lcb/libcouchbase.gyp +7 -1
- package/deps/lcb/src/capi/cmd_counter.hh +12 -0
- package/deps/lcb/src/capi/cmd_exists.hh +12 -0
- package/deps/lcb/src/capi/cmd_get.hh +12 -0
- package/deps/lcb/src/capi/cmd_get_replica.hh +14 -1
- package/deps/lcb/src/capi/cmd_query.cc +13 -0
- package/deps/lcb/src/capi/cmd_query.hh +22 -14
- package/deps/lcb/src/capi/cmd_remove.hh +12 -0
- package/deps/lcb/src/capi/cmd_store.hh +12 -0
- package/deps/lcb/src/capi/cmd_subdoc.hh +12 -0
- package/deps/lcb/src/capi/cmd_touch.hh +12 -0
- package/deps/lcb/src/capi/cmd_unlock.hh +12 -0
- package/deps/lcb/src/capi/collection_qualifier.hh +4 -6
- package/deps/lcb/src/internal.h +2 -1
- package/deps/lcb/src/mcserver/negotiate.cc +3 -0
- package/deps/lcb/src/n1ql/n1ql.cc +5 -1
- package/deps/lcb/src/n1ql/query_handle.cc +55 -30
- package/deps/lcb/src/n1ql/query_handle.hh +14 -2
- package/deps/lcb/src/operations/counter.cc +12 -0
- package/deps/lcb/src/operations/exists.cc +12 -0
- package/deps/lcb/src/operations/get.cc +12 -0
- package/deps/lcb/src/operations/get_replica.cc +18 -6
- package/deps/lcb/src/operations/remove.cc +12 -0
- package/deps/lcb/src/operations/store.cc +12 -0
- package/deps/lcb/src/operations/subdoc.cc +12 -0
- package/deps/lcb/src/operations/touch.cc +12 -0
- package/deps/lcb/src/operations/unlock.cc +12 -0
- package/deps/lcb/src/search/search_handle.cc +1 -2
- package/deps/lcb/src/ssl/ssl_common.c +1 -1
- package/deps/lcb/src/utilities.cc +21 -0
- package/deps/lcb/src/utilities.h +3 -0
- package/deps/lcb/tests/iotests/mock-environment.cc +10 -1
- package/deps/lcb/tests/iotests/mock-environment.h +2 -1
- package/deps/lcb/tests/iotests/serverparams.h +7 -2
- package/deps/lcb/tests/iotests/t_ratelimit.cc +729 -0
- package/deps/lcb/tests/iotests/testutil.cc +174 -0
- package/deps/lcb/tests/iotests/testutil.h +53 -0
- package/dist/analyticsexecutor.js +2 -2
- package/dist/analyticsindexmanager.js +3 -3
- package/dist/binarycollection.d.ts +17 -0
- package/dist/binding.js +1 -1
- package/dist/bindingutilities.js +5 -1
- package/dist/bucketmanager.d.ts +1 -22
- package/dist/bucketmanager.js +5 -5
- package/dist/cluster.js +1 -1
- package/dist/collection.js +6 -6
- package/dist/collectionmanager.js +2 -2
- package/dist/connection.js +3 -3
- package/dist/connspec.js +5 -1
- package/dist/couchbase.js +5 -1
- package/dist/httpexecutor.js +5 -1
- package/dist/logging.js +1 -1
- package/dist/queryexecutor.js +3 -3
- package/dist/searchindexmanager.js +1 -1
- package/dist/usermanager.js +2 -2
- package/dist/utilities.d.ts +1 -2
- package/dist/utilities.js +9 -2
- package/dist/viewexecutor.js +1 -1
- package/package.json +1 -1
- package/src/uv-plugin-all.cpp +1 -0
- package/dist/cas.d.ts +0 -0
- package/dist/cas.js +0 -1
package/binding.gyp
CHANGED
package/deps/lcb/CMakeLists.txt
CHANGED
@@ -30,7 +30,7 @@ CMAKE_MINIMUM_REQUIRED(VERSION 3.5.1)
|
|
30
30
|
# Couchbase mock path to download
|
31
31
|
SET(COUCHBASE_MOCK_VERSION 1.5.25)
|
32
32
|
SET(COUCHBASE_MOCK_URL "https://github.com/couchbase/CouchbaseMock/releases/download/${COUCHBASE_MOCK_VERSION}/CouchbaseMock-${COUCHBASE_MOCK_VERSION}.jar")
|
33
|
-
project(libcouchbase VERSION 3.2.
|
33
|
+
project(libcouchbase VERSION 3.2.5 LANGUAGES C CXX)
|
34
34
|
|
35
35
|
if (NOT CMAKE_VERSION VERSION_LESS "3.13")
|
36
36
|
# CMP0077: option() honors normal variables
|
@@ -1,5 +1,17 @@
|
|
1
1
|
# Release Notes
|
2
2
|
|
3
|
+
## 3.2.5 (2022-02-08)
|
4
|
+
|
5
|
+
CCBC-1486: Add support for preserve expiry to query options
|
6
|
+
CCBC-1534, CCBC-1411: improve query error handling
|
7
|
+
CCBC-1519: pass extra privilege with KV "on-behalf-of".
|
8
|
+
CCBC-1521: fix bootstrap process when client cert is used and error map is supported. If client cert auth is used, once
|
9
|
+
the error map response has been received, the negotiation is complete.
|
10
|
+
CCBC-1529: load authentication certificate as chain file.
|
11
|
+
CCBC-1525: remove stringstream in `collection_qualifier`. Constructing a stringstream object every time
|
12
|
+
`collection_qualifier` is constructed is very expensive.
|
13
|
+
CCBC-1528: update parsing of "quota limit" error for FTS
|
14
|
+
|
3
15
|
## 3.2.4 (2021-11-23)
|
4
16
|
|
5
17
|
CCBC-1522: Filter `DnsQuery` results on Windows by type: only use records with `DNS_TYPE_SRV` type.
|
@@ -65,7 +65,7 @@ IF(APPLE)
|
|
65
65
|
ELSE()
|
66
66
|
SET(LCB_SONAME_MAJOR "8")
|
67
67
|
ENDIF()
|
68
|
-
SET(LCB_SONAME_FULL "${LCB_SONAME_MAJOR}.0.
|
68
|
+
SET(LCB_SONAME_FULL "${LCB_SONAME_MAJOR}.0.6")
|
69
69
|
|
70
70
|
MESSAGE(STATUS "libcouchbase ${LCB_VERSION_MAJOR},${LCB_VERSION_MINOR},${LCB_VERSION_PATCH}")
|
71
71
|
MESSAGE(STATUS "Building libcouchbase ${LCB_VERSION}/${LCB_VERSION_CHANGESET}")
|
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.5
|
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
|
@@ -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.5-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 0x030205
|
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 "e4de408c96550b48745b3a142d9827c898d4e96f"
|
59
59
|
|
60
60
|
/**@brief The client ID
|
61
61
|
*/
|
@@ -710,6 +710,11 @@ LIBCOUCHBASE_API lcb_STATUS lcb_cmdget_timeout(lcb_CMDGET *cmd, uint32_t timeout
|
|
710
710
|
* @internal Internal: This should never be used and is not supported.
|
711
711
|
*/
|
712
712
|
LIBCOUCHBASE_API lcb_STATUS lcb_cmdget_on_behalf_of(lcb_CMDGET *cmd, const char *data, size_t data_len);
|
713
|
+
/**
|
714
|
+
* @internal Internal: This should never be used and is not supported.
|
715
|
+
*/
|
716
|
+
LIBCOUCHBASE_API lcb_STATUS lcb_cmdget_on_behalf_of_extra_privilege(lcb_CMDGET *cmd, const char *privilege,
|
717
|
+
size_t privilege_len);
|
713
718
|
|
714
719
|
LIBCOUCHBASE_API lcb_STATUS lcb_get(lcb_INSTANCE *instance, void *cookie, const lcb_CMDGET *cmd);
|
715
720
|
/**@}*/
|
@@ -816,6 +821,11 @@ LIBCOUCHBASE_API lcb_STATUS lcb_cmdgetreplica_timeout(lcb_CMDGETREPLICA *cmd, ui
|
|
816
821
|
* @internal Internal: This should never be used and is not supported.
|
817
822
|
*/
|
818
823
|
LIBCOUCHBASE_API lcb_STATUS lcb_cmdgetreplica_on_behalf_of(lcb_CMDGETREPLICA *cmd, const char *data, size_t data_len);
|
824
|
+
/**
|
825
|
+
* @internal Internal: This should never be used and is not supported.
|
826
|
+
*/
|
827
|
+
LIBCOUCHBASE_API lcb_STATUS lcb_cmdgetreplica_on_behalf_of_extra_privilege(lcb_CMDGETREPLICA *cmd,
|
828
|
+
const char *privilege, size_t privilege_len);
|
819
829
|
LIBCOUCHBASE_API lcb_STATUS lcb_getreplica(lcb_INSTANCE *instance, void *cookie, const lcb_CMDGETREPLICA *cmd);
|
820
830
|
|
821
831
|
/**@}*/
|
@@ -843,6 +853,11 @@ LIBCOUCHBASE_API lcb_STATUS lcb_cmdexists_timeout(lcb_CMDEXISTS *cmd, uint32_t t
|
|
843
853
|
* @internal Internal: This should never be used and is not supported.
|
844
854
|
*/
|
845
855
|
LIBCOUCHBASE_API lcb_STATUS lcb_cmdexists_on_behalf_of(lcb_CMDEXISTS *cmd, const char *data, size_t data_len);
|
856
|
+
/**
|
857
|
+
* @internal Internal: This should never be used and is not supported.
|
858
|
+
*/
|
859
|
+
LIBCOUCHBASE_API lcb_STATUS lcb_cmdexists_on_behalf_of_extra_privilege(lcb_CMDEXISTS *cmd, const char *privilege,
|
860
|
+
size_t privilege_len);
|
846
861
|
|
847
862
|
LIBCOUCHBASE_API lcb_STATUS lcb_exists(lcb_INSTANCE *instance, void *cookie, const lcb_CMDEXISTS *cmd);
|
848
863
|
|
@@ -994,6 +1009,11 @@ LIBCOUCHBASE_API lcb_STATUS lcb_cmdstore_timeout(lcb_CMDSTORE *cmd, uint32_t tim
|
|
994
1009
|
* @internal Internal: This should never be used and is not supported.
|
995
1010
|
*/
|
996
1011
|
LIBCOUCHBASE_API lcb_STATUS lcb_cmdstore_on_behalf_of(lcb_CMDSTORE *cmd, const char *data, size_t data_len);
|
1012
|
+
/**
|
1013
|
+
* @internal Internal: This should never be used and is not supported.
|
1014
|
+
*/
|
1015
|
+
LIBCOUCHBASE_API lcb_STATUS lcb_cmdstore_on_behalf_of_extra_privilege(lcb_CMDSTORE *cmd, const char *privilege,
|
1016
|
+
size_t privilege_len);
|
997
1017
|
LIBCOUCHBASE_API lcb_STATUS lcb_store(lcb_INSTANCE *instance, void *cookie, const lcb_CMDSTORE *cmd);
|
998
1018
|
/**@}*/
|
999
1019
|
|
@@ -1103,6 +1123,11 @@ LIBCOUCHBASE_API lcb_STATUS lcb_cmdremove_timeout(lcb_CMDREMOVE *cmd, uint32_t t
|
|
1103
1123
|
* @internal Internal: This should never be used and is not supported.
|
1104
1124
|
*/
|
1105
1125
|
LIBCOUCHBASE_API lcb_STATUS lcb_cmdremove_on_behalf_of(lcb_CMDREMOVE *cmd, const char *data, size_t data_len);
|
1126
|
+
/**
|
1127
|
+
* @internal Internal: This should never be used and is not supported.
|
1128
|
+
*/
|
1129
|
+
LIBCOUCHBASE_API lcb_STATUS lcb_cmdremove_on_behalf_of_extra_privilege(lcb_CMDREMOVE *cmd, const char *privilege,
|
1130
|
+
size_t privilege_len);
|
1106
1131
|
LIBCOUCHBASE_API lcb_STATUS lcb_remove(lcb_INSTANCE *instance, void *cookie, const lcb_CMDREMOVE *cmd);
|
1107
1132
|
|
1108
1133
|
/**@}*/
|
@@ -1196,6 +1221,11 @@ LIBCOUCHBASE_API lcb_STATUS lcb_cmdcounter_timeout(lcb_CMDCOUNTER *cmd, uint32_t
|
|
1196
1221
|
* @internal Internal: This should never be used and is not supported.
|
1197
1222
|
*/
|
1198
1223
|
LIBCOUCHBASE_API lcb_STATUS lcb_cmdcounter_on_behalf_of(lcb_CMDCOUNTER *cmd, const char *data, size_t data_len);
|
1224
|
+
/**
|
1225
|
+
* @internal Internal: This should never be used and is not supported.
|
1226
|
+
*/
|
1227
|
+
LIBCOUCHBASE_API lcb_STATUS lcb_cmdcounter_on_behalf_of_extra_privilege(lcb_CMDCOUNTER *cmd, const char *privilege,
|
1228
|
+
size_t privilege_len);
|
1199
1229
|
LIBCOUCHBASE_API lcb_STATUS lcb_counter(lcb_INSTANCE *instance, void *cookie, const lcb_CMDCOUNTER *cmd);
|
1200
1230
|
|
1201
1231
|
/**@} (Group: Counter) */
|
@@ -1277,6 +1307,11 @@ LIBCOUCHBASE_API lcb_STATUS lcb_cmdunlock_timeout(lcb_CMDUNLOCK *cmd, uint32_t t
|
|
1277
1307
|
* @internal Internal: This should never be used and is not supported.
|
1278
1308
|
*/
|
1279
1309
|
LIBCOUCHBASE_API lcb_STATUS lcb_cmdunlock_on_behalf_of(lcb_CMDUNLOCK *cmd, const char *data, size_t data_len);
|
1310
|
+
/**
|
1311
|
+
* @internal Internal: This should never be used and is not supported.
|
1312
|
+
*/
|
1313
|
+
LIBCOUCHBASE_API lcb_STATUS lcb_cmdunlock_on_behalf_of_extra_privilege(lcb_CMDUNLOCK *cmd, const char *privilege,
|
1314
|
+
size_t privilege_len);
|
1280
1315
|
LIBCOUCHBASE_API lcb_STATUS lcb_unlock(lcb_INSTANCE *instance, void *cookie, const lcb_CMDUNLOCK *cmd);
|
1281
1316
|
|
1282
1317
|
/**@} (Group: Unlock) */
|
@@ -1348,6 +1383,11 @@ LIBCOUCHBASE_API lcb_STATUS lcb_cmdtouch_timeout(lcb_CMDTOUCH *cmd, uint32_t tim
|
|
1348
1383
|
* @internal Internal: This should never be used and is not supported.
|
1349
1384
|
*/
|
1350
1385
|
LIBCOUCHBASE_API lcb_STATUS lcb_cmdtouch_on_behalf_of(lcb_CMDTOUCH *cmd, const char *data, size_t data_len);
|
1386
|
+
/**
|
1387
|
+
* @internal Internal: This should never be used and is not supported.
|
1388
|
+
*/
|
1389
|
+
LIBCOUCHBASE_API lcb_STATUS lcb_cmdtouch_on_behalf_of_extra_privilege(lcb_CMDTOUCH *cmd, const char *privilege,
|
1390
|
+
size_t privilege_len);
|
1351
1391
|
LIBCOUCHBASE_API lcb_STATUS lcb_touch(lcb_INSTANCE *instance, void *cookie, const lcb_CMDTOUCH *cmd);
|
1352
1392
|
|
1353
1393
|
/**@} (Group: Touch) */
|
@@ -3070,6 +3110,16 @@ LIBCOUCHBASE_API lcb_STATUS lcb_cmdquery_option(lcb_CMDQUERY *cmd, const char *n
|
|
3070
3110
|
size_t value_len);
|
3071
3111
|
LIBCOUCHBASE_API lcb_STATUS lcb_cmdquery_handle(lcb_CMDQUERY *cmd, lcb_QUERY_HANDLE **handle);
|
3072
3112
|
LIBCOUCHBASE_API lcb_STATUS lcb_cmdquery_timeout(lcb_CMDQUERY *cmd, uint32_t timeout);
|
3113
|
+
/**
|
3114
|
+
* @uncommitted
|
3115
|
+
* Indicates that the query engine to preserve expiration values set on any
|
3116
|
+
* documents modified by this query.
|
3117
|
+
*
|
3118
|
+
*
|
3119
|
+
* @param cmd the command
|
3120
|
+
* @param preserve_expiry if non-zero, the query will preserve expiration values
|
3121
|
+
*/
|
3122
|
+
LIBCOUCHBASE_API lcb_STATUS lcb_cmdquery_preserve_expiry(lcb_CMDQUERY *cmd, int preserve_expiry);
|
3073
3123
|
|
3074
3124
|
/**
|
3075
3125
|
* @internal Internal: This should never be used and is not supported.
|
@@ -3290,6 +3340,8 @@ LIBCOUCHBASE_API lcb_STATUS lcb_cmdsubdoc_timeout(lcb_CMDSUBDOC *cmd, uint32_t t
|
|
3290
3340
|
* @internal Internal: This should never be used and is not supported.
|
3291
3341
|
*/
|
3292
3342
|
LIBCOUCHBASE_API lcb_STATUS lcb_cmdsubdoc_on_behalf_of(lcb_CMDSUBDOC *cmd, const char *data, size_t data_len);
|
3343
|
+
LIBCOUCHBASE_API lcb_STATUS lcb_cmdsubdoc_on_behalf_of_extra_privilege(lcb_CMDSUBDOC *cmd, const char *privilege,
|
3344
|
+
size_t privilege_len);
|
3293
3345
|
|
3294
3346
|
LIBCOUCHBASE_API lcb_STATUS lcb_subdoc(lcb_INSTANCE *instance, void *cookie, const lcb_CMDSUBDOC *cmd);
|
3295
3347
|
/** @} */
|
@@ -250,6 +250,8 @@ LIBCOUCHBASE_API lcb_STATUS lcb_errctx_query_rc(const lcb_QUERY_ERROR_CONTEXT *c
|
|
250
250
|
LIBCOUCHBASE_API lcb_STATUS lcb_errctx_query_first_error_code(const lcb_QUERY_ERROR_CONTEXT *ctx, uint32_t *code);
|
251
251
|
LIBCOUCHBASE_API lcb_STATUS lcb_errctx_query_first_error_message(const lcb_QUERY_ERROR_CONTEXT *ctx,
|
252
252
|
const char **message, size_t *message_len);
|
253
|
+
LIBCOUCHBASE_API lcb_STATUS lcb_errctx_query_error_response_body(const lcb_QUERY_ERROR_CONTEXT *ctx, const char **body,
|
254
|
+
size_t *body_len);
|
253
255
|
LIBCOUCHBASE_API lcb_STATUS lcb_errctx_query_statement(const lcb_QUERY_ERROR_CONTEXT *ctx, const char **statement,
|
254
256
|
size_t *statement_len);
|
255
257
|
LIBCOUCHBASE_API lcb_STATUS lcb_errctx_query_client_context_id(const lcb_QUERY_ERROR_CONTEXT *ctx, const char **id,
|
@@ -388,7 +390,8 @@ lcb_errmap_callback lcb_set_errmap_callback(lcb_INSTANCE *instance, lcb_errmap_c
|
|
388
390
|
X(LCB_RETRY_REASON_CIRCUIT_BREAKER_OPEN, 13, 1, 0) \
|
389
391
|
X(LCB_RETRY_REASON_QUERY_PREPARED_STATEMENT_FAILURE, 14, 1, 0) \
|
390
392
|
X(LCB_RETRY_REASON_ANALYTICS_TEMPORARY_FAILURE, 15, 1, 0) \
|
391
|
-
X(LCB_RETRY_REASON_SEARCH_TOO_MANY_REQUESTS, 16, 1, 0)
|
393
|
+
X(LCB_RETRY_REASON_SEARCH_TOO_MANY_REQUESTS, 16, 1, 0) \
|
394
|
+
X(LCB_RETRY_REASON_QUERY_ERROR_RETRYABLE, 17, 1, 0)
|
392
395
|
/* clang-format on */
|
393
396
|
|
394
397
|
typedef enum {
|
@@ -12,6 +12,7 @@
|
|
12
12
|
'msvs_settings': {
|
13
13
|
'VCCLCompilerTool': {
|
14
14
|
'RuntimeLibrary': 1, # static debug
|
15
|
+
'ExceptionHandling': 2
|
15
16
|
},
|
16
17
|
},
|
17
18
|
},
|
@@ -20,6 +21,7 @@
|
|
20
21
|
'msvs_settings': {
|
21
22
|
'VCCLCompilerTool': {
|
22
23
|
'RuntimeLibrary': 0, # static release
|
24
|
+
'ExceptionHandling': 2
|
23
25
|
},
|
24
26
|
},
|
25
27
|
}
|
@@ -64,6 +66,11 @@
|
|
64
66
|
]
|
65
67
|
}
|
66
68
|
}],
|
69
|
+
['OS=="linux"', {
|
70
|
+
"libraries": [
|
71
|
+
'-static-libgcc -static-libstdc++',
|
72
|
+
]
|
73
|
+
}],
|
67
74
|
]
|
68
75
|
},
|
69
76
|
|
@@ -155,7 +162,6 @@
|
|
155
162
|
'type': 'static_library',
|
156
163
|
'sources': [
|
157
164
|
'contrib/HdrHistogram_c/src/hdr_encoding.c',
|
158
|
-
'contrib/HdrHistogram_c/src/hdr_histogram_log_no_op.c',
|
159
165
|
'contrib/HdrHistogram_c/src/hdr_histogram_log.c',
|
160
166
|
'contrib/HdrHistogram_c/src/hdr_histogram.c',
|
161
167
|
'contrib/HdrHistogram_c/src/hdr_interval_recorder.c',
|
@@ -187,6 +187,17 @@ struct lcb_CMDCOUNTER_ {
|
|
187
187
|
return LCB_SUCCESS;
|
188
188
|
}
|
189
189
|
|
190
|
+
lcb_STATUS on_behalf_of_add_extra_privilege(std::string privilege)
|
191
|
+
{
|
192
|
+
extra_privileges_.emplace_back(std::move(privilege));
|
193
|
+
return LCB_SUCCESS;
|
194
|
+
}
|
195
|
+
|
196
|
+
const std::vector<std::string> &extra_privileges() const
|
197
|
+
{
|
198
|
+
return extra_privileges_;
|
199
|
+
}
|
200
|
+
|
190
201
|
bool want_impersonation() const
|
191
202
|
{
|
192
203
|
return !impostor_.empty();
|
@@ -210,6 +221,7 @@ struct lcb_CMDCOUNTER_ {
|
|
210
221
|
bool initialize_if_does_not_exist_{false};
|
211
222
|
lcb_DURABILITY_LEVEL durability_level_{LCB_DURABILITYLEVEL_NONE};
|
212
223
|
std::string impostor_{};
|
224
|
+
std::vector<std::string> extra_privileges_{};
|
213
225
|
};
|
214
226
|
|
215
227
|
/**
|
@@ -127,6 +127,17 @@ struct lcb_CMDEXISTS_ {
|
|
127
127
|
return LCB_SUCCESS;
|
128
128
|
}
|
129
129
|
|
130
|
+
lcb_STATUS on_behalf_of_add_extra_privilege(std::string privilege)
|
131
|
+
{
|
132
|
+
extra_privileges_.emplace_back(std::move(privilege));
|
133
|
+
return LCB_SUCCESS;
|
134
|
+
}
|
135
|
+
|
136
|
+
const std::vector<std::string> &extra_privileges() const
|
137
|
+
{
|
138
|
+
return extra_privileges_;
|
139
|
+
}
|
140
|
+
|
130
141
|
bool want_impersonation() const
|
131
142
|
{
|
132
143
|
return !impostor_.empty();
|
@@ -145,6 +156,7 @@ struct lcb_CMDEXISTS_ {
|
|
145
156
|
void *cookie_{nullptr};
|
146
157
|
std::string key_{};
|
147
158
|
std::string impostor_{};
|
159
|
+
std::vector<std::string> extra_privileges_{};
|
148
160
|
};
|
149
161
|
|
150
162
|
/**
|
@@ -186,6 +186,17 @@ struct lcb_CMDGET_ {
|
|
186
186
|
return LCB_SUCCESS;
|
187
187
|
}
|
188
188
|
|
189
|
+
lcb_STATUS on_behalf_of_add_extra_privilege(std::string privilege)
|
190
|
+
{
|
191
|
+
extra_privileges_.emplace_back(std::move(privilege));
|
192
|
+
return LCB_SUCCESS;
|
193
|
+
}
|
194
|
+
|
195
|
+
const std::vector<std::string> &extra_privileges() const
|
196
|
+
{
|
197
|
+
return extra_privileges_;
|
198
|
+
}
|
199
|
+
|
189
200
|
bool want_impersonation() const
|
190
201
|
{
|
191
202
|
return !impostor_.empty();
|
@@ -208,6 +219,7 @@ struct lcb_CMDGET_ {
|
|
208
219
|
get_mode mode_{get_mode::normal};
|
209
220
|
bool cookie_is_callback_{false};
|
210
221
|
std::string impostor_{};
|
222
|
+
std::vector<std::string> extra_privileges_{};
|
211
223
|
};
|
212
224
|
|
213
225
|
/** @private */
|
@@ -60,7 +60,8 @@ struct lcb_CMDGETREPLICA_ {
|
|
60
60
|
return LCB_SUCCESS;
|
61
61
|
}
|
62
62
|
|
63
|
-
int selected_replica_index() const
|
63
|
+
int selected_replica_index() const
|
64
|
+
{
|
64
65
|
return select_index_;
|
65
66
|
}
|
66
67
|
|
@@ -162,6 +163,17 @@ struct lcb_CMDGETREPLICA_ {
|
|
162
163
|
return LCB_SUCCESS;
|
163
164
|
}
|
164
165
|
|
166
|
+
lcb_STATUS on_behalf_of_add_extra_privilege(std::string privilege)
|
167
|
+
{
|
168
|
+
extra_privileges_.emplace_back(std::move(privilege));
|
169
|
+
return LCB_SUCCESS;
|
170
|
+
}
|
171
|
+
|
172
|
+
const std::vector<std::string> &extra_privileges() const
|
173
|
+
{
|
174
|
+
return extra_privileges_;
|
175
|
+
}
|
176
|
+
|
165
177
|
bool want_impersonation() const
|
166
178
|
{
|
167
179
|
return !impostor_.empty();
|
@@ -182,6 +194,7 @@ struct lcb_CMDGETREPLICA_ {
|
|
182
194
|
get_replica_mode mode_{get_replica_mode::any};
|
183
195
|
int select_index_{0};
|
184
196
|
std::string impostor_{};
|
197
|
+
std::vector<std::string> extra_privileges_{};
|
185
198
|
};
|
186
199
|
|
187
200
|
struct lcb_RESPGETREPLICA_ {
|
@@ -268,6 +268,11 @@ LIBCOUCHBASE_API lcb_STATUS lcb_cmdquery_on_behalf_of(lcb_CMDQUERY *cmd, const c
|
|
268
268
|
return cmd->on_behalf_of(std::string(data, data_len));
|
269
269
|
}
|
270
270
|
|
271
|
+
LIBCOUCHBASE_API lcb_STATUS lcb_cmdquery_preserve_expiry(lcb_CMDQUERY *cmd, int preserve_expiry)
|
272
|
+
{
|
273
|
+
return cmd->preserve_expiry(preserve_expiry);
|
274
|
+
}
|
275
|
+
|
271
276
|
LIBCOUCHBASE_API lcb_STATUS lcb_errctx_query_rc(const lcb_QUERY_ERROR_CONTEXT *ctx)
|
272
277
|
{
|
273
278
|
return ctx->rc;
|
@@ -287,6 +292,14 @@ LIBCOUCHBASE_API lcb_STATUS lcb_errctx_query_first_error_message(const lcb_QUERY
|
|
287
292
|
return LCB_SUCCESS;
|
288
293
|
}
|
289
294
|
|
295
|
+
LIBCOUCHBASE_API lcb_STATUS lcb_errctx_query_error_response_body(const lcb_QUERY_ERROR_CONTEXT *ctx, const char **body,
|
296
|
+
size_t *body_len)
|
297
|
+
{
|
298
|
+
*body = ctx->error_response_body;
|
299
|
+
*body_len = ctx->error_response_body_len;
|
300
|
+
return LCB_SUCCESS;
|
301
|
+
}
|
302
|
+
|
290
303
|
LIBCOUCHBASE_API lcb_STATUS lcb_errctx_query_statement(const lcb_QUERY_ERROR_CONTEXT *ctx, const char **statement,
|
291
304
|
size_t *statement_len)
|
292
305
|
{
|
@@ -30,20 +30,22 @@
|
|
30
30
|
*/
|
31
31
|
struct lcb_QUERY_ERROR_CONTEXT_ {
|
32
32
|
lcb_STATUS rc;
|
33
|
-
uint32_t first_error_code;
|
34
|
-
const char *first_error_message;
|
35
|
-
size_t first_error_message_len;
|
36
|
-
const char *
|
37
|
-
size_t
|
38
|
-
const char *
|
39
|
-
size_t
|
40
|
-
const char *
|
41
|
-
size_t
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
const char *
|
46
|
-
size_t
|
33
|
+
uint32_t first_error_code{};
|
34
|
+
const char *first_error_message{};
|
35
|
+
size_t first_error_message_len{};
|
36
|
+
const char *error_response_body{};
|
37
|
+
size_t error_response_body_len{};
|
38
|
+
const char *statement{};
|
39
|
+
size_t statement_len{};
|
40
|
+
const char *client_context_id{};
|
41
|
+
size_t client_context_id_len{};
|
42
|
+
const char *query_params{};
|
43
|
+
size_t query_params_len{};
|
44
|
+
uint32_t http_response_code{};
|
45
|
+
const char *http_response_message{};
|
46
|
+
size_t http_response_message_len{};
|
47
|
+
const char *endpoint{};
|
48
|
+
size_t endpoint_len{};
|
47
49
|
};
|
48
50
|
|
49
51
|
/**
|
@@ -203,6 +205,12 @@ struct lcb_CMDQUERY_ {
|
|
203
205
|
return LCB_SUCCESS;
|
204
206
|
}
|
205
207
|
|
208
|
+
lcb_STATUS preserve_expiry(bool preserve_expiry)
|
209
|
+
{
|
210
|
+
root_["preserve_expiry"] = preserve_expiry;
|
211
|
+
return LCB_SUCCESS;
|
212
|
+
}
|
213
|
+
|
206
214
|
lcb_STATUS callback(lcb_QUERY_CALLBACK row_callback)
|
207
215
|
{
|
208
216
|
callback_ = row_callback;
|
@@ -154,6 +154,17 @@ struct lcb_CMDREMOVE_ {
|
|
154
154
|
return LCB_SUCCESS;
|
155
155
|
}
|
156
156
|
|
157
|
+
lcb_STATUS on_behalf_of_add_extra_privilege(std::string privilege)
|
158
|
+
{
|
159
|
+
extra_privileges_.emplace_back(std::move(privilege));
|
160
|
+
return LCB_SUCCESS;
|
161
|
+
}
|
162
|
+
|
163
|
+
const std::vector<std::string> &extra_privileges() const
|
164
|
+
{
|
165
|
+
return extra_privileges_;
|
166
|
+
}
|
167
|
+
|
157
168
|
bool want_impersonation() const
|
158
169
|
{
|
159
170
|
return !impostor_.empty();
|
@@ -174,6 +185,7 @@ struct lcb_CMDREMOVE_ {
|
|
174
185
|
std::uint64_t cas_{0};
|
175
186
|
lcb_DURABILITY_LEVEL durability_level_{LCB_DURABILITYLEVEL_NONE};
|
176
187
|
std::string impostor_{};
|
188
|
+
std::vector<std::string> extra_privileges_{};
|
177
189
|
};
|
178
190
|
|
179
191
|
/**
|
@@ -371,6 +371,17 @@ struct lcb_CMDSTORE_ {
|
|
371
371
|
return LCB_SUCCESS;
|
372
372
|
}
|
373
373
|
|
374
|
+
lcb_STATUS on_behalf_of_add_extra_privilege(std::string privilege)
|
375
|
+
{
|
376
|
+
extra_privileges_.emplace_back(std::move(privilege));
|
377
|
+
return LCB_SUCCESS;
|
378
|
+
}
|
379
|
+
|
380
|
+
const std::vector<std::string> &extra_privileges() const
|
381
|
+
{
|
382
|
+
return extra_privileges_;
|
383
|
+
}
|
384
|
+
|
374
385
|
bool want_impersonation() const
|
375
386
|
{
|
376
387
|
return !impostor_.empty();
|
@@ -402,6 +413,7 @@ struct lcb_CMDSTORE_ {
|
|
402
413
|
bool cookie_is_callback_{false};
|
403
414
|
bool preserve_expiry_{false};
|
404
415
|
std::string impostor_{};
|
416
|
+
std::vector<std::string> extra_privileges_{};
|
405
417
|
};
|
406
418
|
|
407
419
|
/**
|
@@ -445,6 +445,17 @@ struct lcb_CMDSUBDOC_ {
|
|
445
445
|
return LCB_SUCCESS;
|
446
446
|
}
|
447
447
|
|
448
|
+
lcb_STATUS on_behalf_of_add_extra_privilege(std::string privilege)
|
449
|
+
{
|
450
|
+
extra_privileges_.emplace_back(std::move(privilege));
|
451
|
+
return LCB_SUCCESS;
|
452
|
+
}
|
453
|
+
|
454
|
+
const std::vector<std::string> &extra_privileges() const
|
455
|
+
{
|
456
|
+
return extra_privileges_;
|
457
|
+
}
|
458
|
+
|
448
459
|
bool want_impersonation() const
|
449
460
|
{
|
450
461
|
return !impostor_.empty();
|
@@ -469,6 +480,7 @@ struct lcb_CMDSUBDOC_ {
|
|
469
480
|
lcb_SUBDOCSPECS_ specs_{};
|
470
481
|
bool preserve_expiry_{false};
|
471
482
|
std::string impostor_{};
|
483
|
+
std::vector<std::string> extra_privileges_{};
|
472
484
|
};
|
473
485
|
|
474
486
|
/**
|
@@ -138,6 +138,17 @@ struct lcb_CMDTOUCH_ {
|
|
138
138
|
return LCB_SUCCESS;
|
139
139
|
}
|
140
140
|
|
141
|
+
lcb_STATUS on_behalf_of_add_extra_privilege(std::string privilege)
|
142
|
+
{
|
143
|
+
extra_privileges_.emplace_back(std::move(privilege));
|
144
|
+
return LCB_SUCCESS;
|
145
|
+
}
|
146
|
+
|
147
|
+
const std::vector<std::string> &extra_privileges() const
|
148
|
+
{
|
149
|
+
return extra_privileges_;
|
150
|
+
}
|
151
|
+
|
141
152
|
bool want_impersonation() const
|
142
153
|
{
|
143
154
|
return !impostor_.empty();
|
@@ -157,6 +168,7 @@ struct lcb_CMDTOUCH_ {
|
|
157
168
|
void *cookie_{nullptr};
|
158
169
|
std::string key_{};
|
159
170
|
std::string impostor_{};
|
171
|
+
std::vector<std::string> extra_privileges_{};
|
160
172
|
};
|
161
173
|
|
162
174
|
/**
|
@@ -141,6 +141,17 @@ struct lcb_CMDUNLOCK_ {
|
|
141
141
|
return LCB_SUCCESS;
|
142
142
|
}
|
143
143
|
|
144
|
+
lcb_STATUS on_behalf_of_add_extra_privilege(std::string privilege)
|
145
|
+
{
|
146
|
+
extra_privileges_.emplace_back(std::move(privilege));
|
147
|
+
return LCB_SUCCESS;
|
148
|
+
}
|
149
|
+
|
150
|
+
const std::vector<std::string> &extra_privileges() const
|
151
|
+
{
|
152
|
+
return extra_privileges_;
|
153
|
+
}
|
154
|
+
|
144
155
|
bool want_impersonation() const
|
145
156
|
{
|
146
157
|
return !impostor_.empty();
|
@@ -160,6 +171,7 @@ struct lcb_CMDUNLOCK_ {
|
|
160
171
|
std::string key_{};
|
161
172
|
std::uint64_t cas_{};
|
162
173
|
std::string impostor_{};
|
174
|
+
std::vector<std::string> extra_privileges_{};
|
163
175
|
};
|
164
176
|
|
165
177
|
/**
|
@@ -21,7 +21,6 @@
|
|
21
21
|
#include <cstddef>
|
22
22
|
#include <cstdint>
|
23
23
|
#include <string>
|
24
|
-
#include <sstream>
|
25
24
|
#include <stdexcept>
|
26
25
|
|
27
26
|
namespace lcb
|
@@ -48,11 +47,10 @@ struct collection_qualifier {
|
|
48
47
|
if (collection_name != nullptr && collection_name_len > 0) {
|
49
48
|
collection_.assign(collection_name, collection_name_len);
|
50
49
|
}
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
spec_ = ss.str();
|
50
|
+
|
51
|
+
spec_ = (scope_.empty() ? "_default" : scope_) +
|
52
|
+
'.' +
|
53
|
+
(collection_.empty() ? "_default" : collection_);
|
56
54
|
}
|
57
55
|
|
58
56
|
const std::string &scope() const
|
package/deps/lcb/src/internal.h
CHANGED
@@ -259,7 +259,8 @@ lcb_STATUS lcb_initialize_socket_subsystem(void);
|
|
259
259
|
lcb_STATUS lcb_reinit(lcb_INSTANCE *obj, const char *connstr);
|
260
260
|
|
261
261
|
lcb_RETRY_ACTION lcb_kv_should_retry(const lcb_settings *settings, const mc_PACKET *pkt, lcb_STATUS err);
|
262
|
-
lcb_RETRY_ACTION lcb_query_should_retry(const lcb_settings *settings, lcb_QUERY_HANDLE *query, lcb_STATUS err
|
262
|
+
lcb_RETRY_ACTION lcb_query_should_retry(const lcb_settings *settings, lcb_QUERY_HANDLE *query, lcb_STATUS err,
|
263
|
+
int retry_attribute);
|
263
264
|
|
264
265
|
lcb_RESPCALLBACK lcb_find_callback(lcb_INSTANCE *instance, lcb_CALLBACK_TYPE cbtype);
|
265
266
|
|
@@ -660,6 +660,9 @@ GT_NEXT_PACKET:
|
|
660
660
|
status);
|
661
661
|
set_error(LCB_ERR_PROTOCOL_ERROR, "GET_ERRMAP response unexpected", &resp);
|
662
662
|
}
|
663
|
+
if (settings->keypath) {
|
664
|
+
completed = !maybe_select_bucket();
|
665
|
+
}
|
663
666
|
// Note, there is no explicit state transition here. LIST_MECHS is
|
664
667
|
// pipelined after this request.
|
665
668
|
break;
|
@@ -52,10 +52,14 @@ static lcb_RETRY_REASON query_code_to_reason(lcb_STATUS err)
|
|
52
52
|
}
|
53
53
|
}
|
54
54
|
|
55
|
-
lcb_RETRY_ACTION lcb_query_should_retry(const lcb_settings *settings, lcb_QUERY_HANDLE *query, lcb_STATUS err
|
55
|
+
lcb_RETRY_ACTION lcb_query_should_retry(const lcb_settings *settings, lcb_QUERY_HANDLE *query, lcb_STATUS err,
|
56
|
+
int retry_attribute)
|
56
57
|
{
|
57
58
|
lcb_RETRY_ACTION retry_action{};
|
58
59
|
lcb_RETRY_REASON retry_reason = query_code_to_reason(err);
|
60
|
+
if (retry_attribute) {
|
61
|
+
retry_reason = LCB_RETRY_REASON_QUERY_ERROR_RETRYABLE;
|
62
|
+
}
|
59
63
|
if (err == LCB_ERR_TIMEOUT) {
|
60
64
|
/* We can't exceed a timeout for ETIMEDOUT */
|
61
65
|
retry_action.should_retry = 0;
|