couchbase 3.4.0 → 3.4.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/ext/couchbase/CMakeLists.txt +8 -3
- data/ext/couchbase/cmake/CompilerWarnings.cmake +12 -4
- data/ext/couchbase/cmake/Documentation.cmake +4 -3
- data/ext/couchbase/cmake/OpenSSL.cmake +52 -7
- data/ext/couchbase/cmake/VersionInfo.cmake +39 -3
- data/ext/couchbase/cmake/test_openssl.cxx +7 -0
- data/ext/couchbase/core/crypto/CMakeLists.txt +5 -1
- data/ext/couchbase/core/impl/collection_query_index_manager.cxx +3 -3
- data/ext/couchbase/core/impl/get_all_query_indexes.cxx +3 -3
- data/ext/couchbase/core/impl/transaction_get_result.cxx +54 -0
- data/ext/couchbase/core/meta/CMakeLists.txt +7 -5
- data/ext/couchbase/core/meta/version.cxx +19 -0
- data/ext/couchbase/core/operations/document_search.cxx +5 -2
- data/ext/couchbase/core/operations/document_search.hxx +0 -1
- data/ext/couchbase/core/transactions/atr_cleanup_entry.cxx +1 -0
- data/ext/couchbase/core/transactions/attempt_context_impl.cxx +62 -31
- data/ext/couchbase/core/transactions/attempt_context_impl.hxx +43 -22
- data/ext/couchbase/core/transactions/forward_compat.hxx +2 -2
- data/ext/couchbase/core/transactions/internal/transaction_context.hxx +1 -1
- data/ext/couchbase/core/transactions/internal/transaction_fields.hxx +1 -0
- data/ext/couchbase/core/transactions/staged_mutation.cxx +1 -1
- data/ext/couchbase/core/transactions/staged_mutation.hxx +12 -2
- data/ext/couchbase/core/transactions/transaction_context.cxx +8 -11
- data/ext/couchbase/core/transactions/transaction_get_result.cxx +41 -31
- data/ext/couchbase/core/transactions/transaction_get_result.hxx +7 -3
- data/ext/couchbase/core/transactions/transaction_links.hxx +13 -1
- data/ext/couchbase/core/transactions/waitable_op_list.hxx +1 -0
- data/ext/couchbase/couchbase/cluster.hxx +2 -2
- data/ext/couchbase/couchbase/cluster_options.hxx +10 -10
- data/ext/couchbase/couchbase/collection.hxx +22 -17
- data/ext/couchbase/couchbase/collection_query_index_manager.hxx +1 -1
- data/ext/couchbase/couchbase/common_options.hxx +1 -1
- data/ext/couchbase/couchbase/configuration_profile.hxx +1 -1
- data/ext/couchbase/couchbase/configuration_profiles_registry.hxx +0 -1
- data/ext/couchbase/couchbase/create_primary_query_index_options.hxx +1 -1
- data/ext/couchbase/couchbase/drop_primary_query_index_options.hxx +1 -1
- data/ext/couchbase/couchbase/drop_query_index_options.hxx +1 -1
- data/ext/couchbase/couchbase/fmt/cas.hxx +12 -0
- data/ext/couchbase/couchbase/fmt/durability_level.hxx +6 -0
- data/ext/couchbase/couchbase/fmt/key_value_extended_error_info.hxx +6 -0
- data/ext/couchbase/couchbase/fmt/key_value_status_code.hxx +6 -0
- data/ext/couchbase/couchbase/fmt/mutation_token.hxx +6 -0
- data/ext/couchbase/couchbase/fmt/query_scan_consistency.hxx +6 -0
- data/ext/couchbase/couchbase/fmt/query_status.hxx +6 -0
- data/ext/couchbase/couchbase/fmt/retry_reason.hxx +6 -0
- data/ext/couchbase/couchbase/fmt/tls_verify_mode.hxx +6 -0
- data/ext/couchbase/couchbase/get_all_query_indexes_options.hxx +5 -4
- data/ext/couchbase/couchbase/query_index_manager.hxx +4 -2
- data/ext/couchbase/couchbase/scope.hxx +1 -1
- data/ext/couchbase/couchbase/subdoc/array_add_unique.hxx +2 -0
- data/ext/couchbase/couchbase/subdoc/array_append.hxx +2 -0
- data/ext/couchbase/couchbase/subdoc/array_insert.hxx +2 -0
- data/ext/couchbase/couchbase/subdoc/array_prepend.hxx +2 -0
- data/ext/couchbase/couchbase/subdoc/count.hxx +2 -0
- data/ext/couchbase/couchbase/subdoc/counter.hxx +2 -0
- data/ext/couchbase/couchbase/subdoc/exists.hxx +2 -0
- data/ext/couchbase/couchbase/subdoc/get.hxx +2 -0
- data/ext/couchbase/couchbase/subdoc/insert.hxx +2 -0
- data/ext/couchbase/couchbase/subdoc/remove.hxx +2 -0
- data/ext/couchbase/couchbase/subdoc/replace.hxx +3 -1
- data/ext/couchbase/couchbase/subdoc/upsert.hxx +2 -0
- data/ext/couchbase/couchbase/transaction_op_error_context.hxx +4 -4
- data/ext/couchbase/couchbase/transactions/transaction_get_result.hxx +36 -51
- data/ext/couchbase/couchbase/transactions/transactions_config.hxx +1 -1
- data/ext/couchbase/test/CMakeLists.txt +2 -0
- data/ext/couchbase/test/test_integration_examples.cxx +141 -0
- data/ext/couchbase/test/test_unit_transaction_utils.cxx +76 -19
- data/ext/couchbase.cxx +479 -20
- data/ext/extconf.rb +2 -1
- data/ext/revisions.rb +3 -2
- data/lib/couchbase/binary_collection.rb +4 -4
- data/lib/couchbase/collection.rb +5 -0
- data/lib/couchbase/errors.rb +10 -0
- data/lib/couchbase/management/collection_query_index_manager.rb +183 -0
- data/lib/couchbase/management/query_index_manager.rb +35 -3
- data/lib/couchbase/management.rb +1 -0
- data/lib/couchbase/options.rb +2 -3
- data/lib/couchbase/version.rb +1 -1
- metadata +9 -5
@@ -25,6 +25,7 @@ transaction_get_result::create_from(const core::operations::lookup_in_response&
|
|
25
25
|
std::optional<std::string> atr_id;
|
26
26
|
std::optional<std::string> transaction_id;
|
27
27
|
std::optional<std::string> attempt_id;
|
28
|
+
std::optional<std::string> operation_id;
|
28
29
|
std::optional<std::vector<std::byte>> staged_content;
|
29
30
|
std::optional<std::string> atr_bucket_name;
|
30
31
|
std::optional<std::string> atr_scope_name;
|
@@ -56,46 +57,49 @@ transaction_get_result::create_from(const core::operations::lookup_in_response&
|
|
56
57
|
attempt_id = codec::tao_json_serializer::deserialize<std::string>(resp.fields[2].value);
|
57
58
|
}
|
58
59
|
if (resp.fields[3].status == key_value_status_code::success) {
|
59
|
-
|
60
|
+
operation_id = codec::tao_json_serializer::deserialize<std::string>(resp.fields[3].value);
|
60
61
|
}
|
61
62
|
if (resp.fields[4].status == key_value_status_code::success) {
|
62
|
-
|
63
|
+
staged_content = resp.fields[4].value;
|
63
64
|
}
|
64
65
|
if (resp.fields[5].status == key_value_status_code::success) {
|
65
|
-
|
66
|
+
atr_bucket_name = codec::tao_json_serializer::deserialize<std::string>(resp.fields[5].value);
|
66
67
|
}
|
67
68
|
if (resp.fields[6].status == key_value_status_code::success) {
|
68
|
-
|
69
|
+
atr_scope_name = codec::tao_json_serializer::deserialize<std::string>(resp.fields[6].value);
|
69
70
|
}
|
70
|
-
|
71
71
|
if (resp.fields[7].status == key_value_status_code::success) {
|
72
|
-
|
72
|
+
atr_collection_name = codec::tao_json_serializer::deserialize<std::string>(resp.fields[7].value);
|
73
|
+
}
|
74
|
+
|
75
|
+
if (resp.fields[8].status == key_value_status_code::success) {
|
76
|
+
auto restore = core::utils::json::parse_binary(resp.fields[8].value);
|
73
77
|
cas_pre_txn = restore["CAS"].as<std::string>();
|
74
78
|
// only present in 6.5+
|
75
79
|
revid_pre_txn = restore["revid"].as<std::string>();
|
76
80
|
exptime_pre_txn = restore["exptime"].as<std::uint32_t>();
|
77
81
|
}
|
78
|
-
if (resp.fields[8].status == key_value_status_code::success) {
|
79
|
-
op = codec::tao_json_serializer::deserialize<std::string>(resp.fields[8].value);
|
80
|
-
}
|
81
82
|
if (resp.fields[9].status == key_value_status_code::success) {
|
82
|
-
|
83
|
+
op = codec::tao_json_serializer::deserialize<std::string>(resp.fields[9].value);
|
84
|
+
}
|
85
|
+
if (resp.fields[10].status == key_value_status_code::success) {
|
86
|
+
auto doc = core::utils::json::parse_binary(resp.fields[10].value);
|
83
87
|
cas_from_doc = doc["CAS"].as<std::string>();
|
84
88
|
// only present in 6.5+
|
85
89
|
revid_from_doc = doc["revid"].as<std::string>();
|
86
90
|
exptime_from_doc = doc["exptime"].as<std::uint32_t>();
|
87
91
|
crc32_from_doc = doc["value_crc32c"].as<std::string>();
|
88
92
|
}
|
89
|
-
if (resp.fields[10].status == key_value_status_code::success) {
|
90
|
-
crc32_of_staging = codec::tao_json_serializer::deserialize<std::string>(resp.fields[10].value);
|
91
|
-
}
|
92
93
|
if (resp.fields[11].status == key_value_status_code::success) {
|
93
|
-
|
94
|
+
crc32_of_staging = codec::tao_json_serializer::deserialize<std::string>(resp.fields[11].value);
|
95
|
+
}
|
96
|
+
if (resp.fields[12].status == key_value_status_code::success) {
|
97
|
+
forward_compat = core::utils::json::parse_binary(resp.fields[12].value);
|
94
98
|
} else {
|
95
99
|
forward_compat = tao::json::empty_object;
|
96
100
|
}
|
97
|
-
if (resp.fields[
|
98
|
-
content = resp.fields[
|
101
|
+
if (resp.fields[13].status == key_value_status_code::success) {
|
102
|
+
content = resp.fields[13].value;
|
99
103
|
}
|
100
104
|
|
101
105
|
transaction_links links(atr_id,
|
@@ -104,6 +108,7 @@ transaction_get_result::create_from(const core::operations::lookup_in_response&
|
|
104
108
|
atr_collection_name,
|
105
109
|
transaction_id,
|
106
110
|
attempt_id,
|
111
|
+
operation_id,
|
107
112
|
staged_content,
|
108
113
|
cas_pre_txn,
|
109
114
|
revid_pre_txn,
|
@@ -126,6 +131,7 @@ transaction_get_result::create_from(const core::document_id& id, const result& r
|
|
126
131
|
std::optional<std::string> atr_id;
|
127
132
|
std::optional<std::string> transaction_id;
|
128
133
|
std::optional<std::string> attempt_id;
|
134
|
+
std::optional<std::string> operation_id;
|
129
135
|
std::optional<std::vector<std::byte>> staged_content;
|
130
136
|
std::optional<std::string> atr_bucket_name;
|
131
137
|
std::optional<std::string> atr_scope_name;
|
@@ -157,45 +163,48 @@ transaction_get_result::create_from(const core::document_id& id, const result& r
|
|
157
163
|
attempt_id = res.values[2].content_as<std::string>();
|
158
164
|
}
|
159
165
|
if (res.values[3].has_value()) {
|
160
|
-
|
166
|
+
operation_id = res.values[3].content_as<std::string>();
|
161
167
|
}
|
162
168
|
if (res.values[4].has_value()) {
|
163
|
-
|
169
|
+
staged_content = res.values[4].raw_value;
|
164
170
|
}
|
165
171
|
if (res.values[5].has_value()) {
|
166
|
-
|
172
|
+
atr_bucket_name = res.values[5].content_as<std::string>();
|
167
173
|
}
|
168
174
|
if (res.values[6].has_value()) {
|
169
|
-
|
175
|
+
atr_scope_name = res.values[6].content_as<std::string>();
|
170
176
|
}
|
171
177
|
if (res.values[7].has_value()) {
|
172
|
-
|
178
|
+
atr_collection_name = res.values[7].content_as<std::string>();
|
179
|
+
}
|
180
|
+
if (res.values[8].has_value()) {
|
181
|
+
auto restore = res.values[8].content_as();
|
173
182
|
cas_pre_txn = restore["CAS"].as<std::string>();
|
174
183
|
// only present in 6.5+
|
175
184
|
revid_pre_txn = restore["revid"].as<std::string>();
|
176
185
|
exptime_pre_txn = restore["exptime"].as<std::uint32_t>();
|
177
186
|
}
|
178
|
-
if (res.values[8].has_value()) {
|
179
|
-
op = res.values[8].content_as<std::string>();
|
180
|
-
}
|
181
187
|
if (res.values[9].has_value()) {
|
182
|
-
|
188
|
+
op = res.values[9].content_as<std::string>();
|
189
|
+
}
|
190
|
+
if (res.values[10].has_value()) {
|
191
|
+
auto doc = res.values[10].content_as();
|
183
192
|
cas_from_doc = doc["CAS"].as<std::string>();
|
184
193
|
// only present in 6.5+
|
185
194
|
revid_from_doc = doc["revid"].as<std::string>();
|
186
195
|
exptime_from_doc = doc["exptime"].as<std::uint32_t>();
|
187
196
|
crc32_from_doc = doc["value_crc32c"].as<std::string>();
|
188
197
|
}
|
189
|
-
if (res.values[10].has_value()) {
|
190
|
-
crc32_of_staging = res.values[10].content_as<std::string>();
|
191
|
-
}
|
192
198
|
if (res.values[11].has_value()) {
|
193
|
-
|
199
|
+
crc32_of_staging = res.values[11].content_as<std::string>();
|
200
|
+
}
|
201
|
+
if (res.values[12].has_value()) {
|
202
|
+
forward_compat = res.values[12].content_as();
|
194
203
|
} else {
|
195
204
|
forward_compat = tao::json::empty_object;
|
196
205
|
}
|
197
|
-
if (res.values[
|
198
|
-
content = res.values[
|
206
|
+
if (res.values[13].has_value()) {
|
207
|
+
content = res.values[13].raw_value;
|
199
208
|
}
|
200
209
|
|
201
210
|
transaction_links links(atr_id,
|
@@ -204,6 +213,7 @@ transaction_get_result::create_from(const core::document_id& id, const result& r
|
|
204
213
|
atr_collection_name,
|
205
214
|
transaction_id,
|
206
215
|
attempt_id,
|
216
|
+
operation_id,
|
207
217
|
staged_content,
|
208
218
|
cas_pre_txn,
|
209
219
|
revid_pre_txn,
|
@@ -77,16 +77,19 @@ class transaction_get_result
|
|
77
77
|
{
|
78
78
|
}
|
79
79
|
|
80
|
-
transaction_get_result(const couchbase::transactions::transaction_get_result& res)
|
80
|
+
explicit transaction_get_result(const couchbase::transactions::transaction_get_result& res)
|
81
81
|
: cas_(res.cas())
|
82
82
|
, document_id_(res.bucket(), res.scope(), res.collection(), res.key())
|
83
|
-
,
|
83
|
+
, links_(res.base_->links())
|
84
|
+
, content_(std::move(res.content()))
|
85
|
+
, metadata_(res.base_->metadata_)
|
84
86
|
{
|
85
87
|
}
|
86
88
|
|
87
89
|
couchbase::transactions::transaction_get_result to_public_result()
|
88
90
|
{
|
89
|
-
return
|
91
|
+
return couchbase::transactions::transaction_get_result(
|
92
|
+
std::make_shared<transaction_get_result>(document_id_, std::move(content_), cas_.value(), links_, metadata_));
|
90
93
|
}
|
91
94
|
|
92
95
|
transaction_get_result(core::document_id id, const tao::json::value& json)
|
@@ -126,6 +129,7 @@ class transaction_get_result
|
|
126
129
|
document.links().atr_collection_name(),
|
127
130
|
document.links().staged_transaction_id(),
|
128
131
|
document.links().staged_attempt_id(),
|
132
|
+
document.links().staged_operation_id(),
|
129
133
|
document.links().staged_content(),
|
130
134
|
document.links().cas_pre_txn(),
|
131
135
|
document.links().revid_pre_txn(),
|
@@ -35,6 +35,7 @@ class transaction_links
|
|
35
35
|
// id of the transaction that has staged content
|
36
36
|
std::optional<std::string> staged_transaction_id_;
|
37
37
|
std::optional<std::string> staged_attempt_id_;
|
38
|
+
std::optional<std::string> staged_operation_id_;
|
38
39
|
std::optional<std::vector<std::byte>> staged_content_;
|
39
40
|
|
40
41
|
// for {BACKUP_FIELDS}
|
@@ -54,6 +55,7 @@ class transaction_links
|
|
54
55
|
std::optional<std::string> atr_collection_name,
|
55
56
|
std::optional<std::string> staged_transaction_id,
|
56
57
|
std::optional<std::string> staged_attempt_id,
|
58
|
+
std::optional<std::string> staged_operation_id,
|
57
59
|
std::optional<std::vector<std::byte>> staged_content,
|
58
60
|
std::optional<std::string> cas_pre_txn,
|
59
61
|
std::optional<std::string> revid_pre_txn,
|
@@ -68,6 +70,7 @@ class transaction_links
|
|
68
70
|
, atr_collection_name_(std::move(atr_collection_name))
|
69
71
|
, staged_transaction_id_(std::move(staged_transaction_id))
|
70
72
|
, staged_attempt_id_(std::move(staged_attempt_id))
|
73
|
+
, staged_operation_id_(std::move(staged_operation_id))
|
71
74
|
, staged_content_(std::move(staged_content))
|
72
75
|
, cas_pre_txn_(std::move(cas_pre_txn))
|
73
76
|
, revid_pre_txn_(std::move(revid_pre_txn))
|
@@ -111,6 +114,9 @@ class transaction_links
|
|
111
114
|
if (staged_transaction_id_) {
|
112
115
|
obj["txnMeta"]["txn"] = staged_transaction_id_.value();
|
113
116
|
}
|
117
|
+
if (staged_operation_id_) {
|
118
|
+
obj["txnMeta"]["txn"] = staged_operation_id_.value();
|
119
|
+
}
|
114
120
|
if (atr_id_) {
|
115
121
|
obj["txnMeta"]["atr"]["key"] = atr_id_.value();
|
116
122
|
}
|
@@ -181,6 +187,11 @@ class transaction_links
|
|
181
187
|
return staged_attempt_id_;
|
182
188
|
}
|
183
189
|
|
190
|
+
[[nodiscard]] std::optional<std::string> staged_operation_id() const
|
191
|
+
{
|
192
|
+
return staged_operation_id_;
|
193
|
+
}
|
194
|
+
|
184
195
|
[[nodiscard]] std::optional<std::string> cas_pre_txn() const
|
185
196
|
{
|
186
197
|
return cas_pre_txn_;
|
@@ -241,12 +252,13 @@ struct fmt::formatter<couchbase::core::transactions::transaction_links> {
|
|
241
252
|
constexpr auto format(const couchbase::core::transactions::transaction_links& r, FormatContext& ctx) const
|
242
253
|
{
|
243
254
|
return format_to(ctx.out(),
|
244
|
-
"transaction_links:{{ atr: {}.{}.{}.{}, txn_id: {}, attempt_id: {}, crc32_of_staging: {} }}",
|
255
|
+
"transaction_links:{{ atr: {}.{}.{}.{}, txn_id: {}, attempt_id: {}, operation_id: {}, crc32_of_staging: {} }}",
|
245
256
|
r.atr_bucket_name().value_or("none"),
|
246
257
|
r.atr_scope_name().value_or("none"),
|
247
258
|
r.atr_collection_name().value_or("none"),
|
248
259
|
r.atr_id().value_or("none"),
|
249
260
|
r.staged_attempt_id().value_or("none"),
|
261
|
+
r.staged_operation_id().value_or("none"),
|
250
262
|
r.crc32_of_staging().value_or("none"));
|
251
263
|
}
|
252
264
|
};
|
@@ -119,6 +119,7 @@ class waitable_op_list
|
|
119
119
|
// calling the callback). So wait for that.
|
120
120
|
CB_TXN_LOG_TRACE("set_query_mode: mode already query, waiting for node to be set...");
|
121
121
|
cv_query_.wait(lock, [this]() { return !mode_.query_node.empty(); });
|
122
|
+
cv_in_flight_.wait(lock, [this]() { return 0 == in_flight_; });
|
122
123
|
in_flight_++;
|
123
124
|
CB_TXN_LOG_TRACE("set_query_mode: node set, continuing...");
|
124
125
|
lock.unlock();
|
@@ -59,7 +59,7 @@ class cluster
|
|
59
59
|
* @param handler the handler that implements @ref cluster_connect_handler
|
60
60
|
*
|
61
61
|
* @since 1.0.0
|
62
|
-
* @
|
62
|
+
* @committed
|
63
63
|
*/
|
64
64
|
template<typename Handler>
|
65
65
|
static void connect(asio::io_context& io, const std::string& connection_string, const cluster_options& options, Handler&& handler)
|
@@ -77,7 +77,7 @@ class cluster
|
|
77
77
|
* @return future object that carries cluster object and operation status
|
78
78
|
*
|
79
79
|
* @since 1.0.0
|
80
|
-
* @
|
80
|
+
* @committed
|
81
81
|
*/
|
82
82
|
[[nodiscard]] static auto connect(asio::io_context& io, const std::string& connection_string, const cluster_options& options)
|
83
83
|
-> std::future<std::pair<cluster, std::error_code>>
|
@@ -54,7 +54,7 @@ class cluster_options
|
|
54
54
|
* @param password
|
55
55
|
*
|
56
56
|
* @since 1.0.0
|
57
|
-
* @
|
57
|
+
* @committed
|
58
58
|
*/
|
59
59
|
cluster_options(std::string username, std::string password)
|
60
60
|
: username_{ std::move(username) }
|
@@ -67,7 +67,7 @@ class cluster_options
|
|
67
67
|
* @param authenticator
|
68
68
|
*
|
69
69
|
* @since 1.0.0
|
70
|
-
* @
|
70
|
+
* @committed
|
71
71
|
*/
|
72
72
|
explicit cluster_options(password_authenticator authenticator)
|
73
73
|
: username_{ std::move(authenticator.username_) }
|
@@ -83,7 +83,7 @@ class cluster_options
|
|
83
83
|
* @param authenticator
|
84
84
|
*
|
85
85
|
* @since 1.0.0
|
86
|
-
* @
|
86
|
+
* @committed
|
87
87
|
*/
|
88
88
|
explicit cluster_options(certificate_authenticator authenticator)
|
89
89
|
: certificate_path_{ std::move(authenticator.certificate_path_) }
|
@@ -115,7 +115,7 @@ class cluster_options
|
|
115
115
|
* @return compression options
|
116
116
|
*
|
117
117
|
* @since 1.0.0
|
118
|
-
* @
|
118
|
+
* @committed
|
119
119
|
*/
|
120
120
|
[[nodiscard]] auto compression() -> compression_options&
|
121
121
|
{
|
@@ -128,7 +128,7 @@ class cluster_options
|
|
128
128
|
* @return timeout options
|
129
129
|
*
|
130
130
|
* @since 1.0.0
|
131
|
-
* @
|
131
|
+
* @committed
|
132
132
|
*/
|
133
133
|
[[nodiscard]] auto timeouts() -> timeout_options&
|
134
134
|
{
|
@@ -141,7 +141,7 @@ class cluster_options
|
|
141
141
|
* @return DNS options
|
142
142
|
*
|
143
143
|
* @since 1.0.0
|
144
|
-
* @
|
144
|
+
* @committed
|
145
145
|
*/
|
146
146
|
[[nodiscard]] auto dns() -> dns_options&
|
147
147
|
{
|
@@ -154,7 +154,7 @@ class cluster_options
|
|
154
154
|
* @return security options
|
155
155
|
*
|
156
156
|
* @since 1.0.0
|
157
|
-
* @
|
157
|
+
* @committed
|
158
158
|
*/
|
159
159
|
[[nodiscard]] auto security() -> security_options&
|
160
160
|
{
|
@@ -167,7 +167,7 @@ class cluster_options
|
|
167
167
|
* @return network options
|
168
168
|
*
|
169
169
|
* @since 1.0.0
|
170
|
-
* @
|
170
|
+
* @committed
|
171
171
|
*/
|
172
172
|
[[nodiscard]] auto network() -> network_options&
|
173
173
|
{
|
@@ -180,7 +180,7 @@ class cluster_options
|
|
180
180
|
* @return metrics options
|
181
181
|
*
|
182
182
|
* @since 1.0.0
|
183
|
-
* @
|
183
|
+
* @committed
|
184
184
|
*/
|
185
185
|
[[nodiscard]] auto metrics() -> metrics_options&
|
186
186
|
{
|
@@ -193,7 +193,7 @@ class cluster_options
|
|
193
193
|
* @return tracing options
|
194
194
|
*
|
195
195
|
* @since 1.0.0
|
196
|
-
* @
|
196
|
+
* @committed
|
197
197
|
*/
|
198
198
|
[[nodiscard]] auto tracing() -> tracing_options&
|
199
199
|
{
|
@@ -161,7 +161,7 @@ class collection
|
|
161
161
|
* @since 1.0.0
|
162
162
|
* @committed
|
163
163
|
*/
|
164
|
-
[[nodiscard]] auto get(std::string document_id, const get_options& options) const
|
164
|
+
[[nodiscard]] auto get(std::string document_id, const get_options& options = {}) const
|
165
165
|
-> std::future<std::pair<key_value_error_context, get_result>>
|
166
166
|
{
|
167
167
|
auto barrier = std::make_shared<std::promise<std::pair<key_value_error_context, get_result>>>();
|
@@ -220,7 +220,9 @@ class collection
|
|
220
220
|
* @since 1.0.0
|
221
221
|
* @committed
|
222
222
|
*/
|
223
|
-
[[nodiscard]] auto get_and_touch(std::string document_id,
|
223
|
+
[[nodiscard]] auto get_and_touch(std::string document_id,
|
224
|
+
std::chrono::seconds duration,
|
225
|
+
const get_and_touch_options& options = {}) const
|
224
226
|
-> std::future<std::pair<key_value_error_context, get_result>>
|
225
227
|
{
|
226
228
|
auto barrier = std::make_shared<std::promise<std::pair<key_value_error_context, get_result>>>();
|
@@ -281,7 +283,7 @@ class collection
|
|
281
283
|
*/
|
282
284
|
[[nodiscard]] auto get_and_touch(std::string document_id,
|
283
285
|
std::chrono::system_clock::time_point time_point,
|
284
|
-
const get_and_touch_options& options) const
|
286
|
+
const get_and_touch_options& options = {}) const
|
285
287
|
-> std::future<std::pair<key_value_error_context, get_result>>
|
286
288
|
{
|
287
289
|
auto barrier = std::make_shared<std::promise<std::pair<key_value_error_context, get_result>>>();
|
@@ -337,7 +339,7 @@ class collection
|
|
337
339
|
* @since 1.0.0
|
338
340
|
* @committed
|
339
341
|
*/
|
340
|
-
[[nodiscard]] auto touch(std::string document_id, std::chrono::seconds duration, const touch_options& options) const
|
342
|
+
[[nodiscard]] auto touch(std::string document_id, std::chrono::seconds duration, const touch_options& options = {}) const
|
341
343
|
-> std::future<std::pair<key_value_error_context, result>>
|
342
344
|
{
|
343
345
|
auto barrier = std::make_shared<std::promise<std::pair<key_value_error_context, result>>>();
|
@@ -396,8 +398,9 @@ class collection
|
|
396
398
|
* @since 1.0.0
|
397
399
|
* @committed
|
398
400
|
*/
|
399
|
-
[[nodiscard]] auto touch(std::string document_id,
|
400
|
-
|
401
|
+
[[nodiscard]] auto touch(std::string document_id,
|
402
|
+
std::chrono::system_clock::time_point time_point,
|
403
|
+
const touch_options& options = {}) const -> std::future<std::pair<key_value_error_context, result>>
|
401
404
|
{
|
402
405
|
auto barrier = std::make_shared<std::promise<std::pair<key_value_error_context, result>>>();
|
403
406
|
auto future = barrier->get_future();
|
@@ -450,7 +453,7 @@ class collection
|
|
450
453
|
* @since 1.0.0
|
451
454
|
* @committed
|
452
455
|
*/
|
453
|
-
[[nodiscard]] auto get_any_replica(std::string document_id, const get_any_replica_options& options) const
|
456
|
+
[[nodiscard]] auto get_any_replica(std::string document_id, const get_any_replica_options& options = {}) const
|
454
457
|
-> std::future<std::pair<key_value_error_context, get_replica_result>>
|
455
458
|
{
|
456
459
|
auto barrier = std::make_shared<std::promise<std::pair<key_value_error_context, get_replica_result>>>();
|
@@ -502,7 +505,7 @@ class collection
|
|
502
505
|
* @since 1.0.0
|
503
506
|
* @committed
|
504
507
|
*/
|
505
|
-
[[nodiscard]] auto get_all_replicas(std::string document_id, const get_all_replicas_options& options) const
|
508
|
+
[[nodiscard]] auto get_all_replicas(std::string document_id, const get_all_replicas_options& options = {}) const
|
506
509
|
-> std::future<std::pair<key_value_error_context, get_all_replicas_result>>
|
507
510
|
{
|
508
511
|
auto barrier = std::make_shared<std::promise<std::pair<key_value_error_context, get_all_replicas_result>>>();
|
@@ -562,7 +565,7 @@ class collection
|
|
562
565
|
* @committed
|
563
566
|
*/
|
564
567
|
template<typename Transcoder = codec::default_json_transcoder, typename Document>
|
565
|
-
[[nodiscard]] auto upsert(std::string document_id, const Document& document, const upsert_options& options) const
|
568
|
+
[[nodiscard]] auto upsert(std::string document_id, const Document& document, const upsert_options& options = {}) const
|
566
569
|
-> std::future<std::pair<key_value_error_context, mutation_result>>
|
567
570
|
{
|
568
571
|
auto barrier = std::make_shared<std::promise<std::pair<key_value_error_context, mutation_result>>>();
|
@@ -624,7 +627,7 @@ class collection
|
|
624
627
|
* @committed
|
625
628
|
*/
|
626
629
|
template<typename Transcoder = codec::default_json_transcoder, typename Document>
|
627
|
-
[[nodiscard]] auto insert(std::string document_id, const Document& document, const insert_options& options) const
|
630
|
+
[[nodiscard]] auto insert(std::string document_id, const Document& document, const insert_options& options = {}) const
|
628
631
|
-> std::future<std::pair<key_value_error_context, mutation_result>>
|
629
632
|
{
|
630
633
|
auto barrier = std::make_shared<std::promise<std::pair<key_value_error_context, mutation_result>>>();
|
@@ -688,7 +691,7 @@ class collection
|
|
688
691
|
* @committed
|
689
692
|
*/
|
690
693
|
template<typename Transcoder = codec::default_json_transcoder, typename Document>
|
691
|
-
[[nodiscard]] auto replace(std::string document_id, const Document& document, const replace_options& options) const
|
694
|
+
[[nodiscard]] auto replace(std::string document_id, const Document& document, const replace_options& options = {}) const
|
692
695
|
-> std::future<std::pair<key_value_error_context, mutation_result>>
|
693
696
|
{
|
694
697
|
auto barrier = std::make_shared<std::promise<std::pair<key_value_error_context, mutation_result>>>();
|
@@ -738,7 +741,7 @@ class collection
|
|
738
741
|
* @since 1.0.0
|
739
742
|
* @committed
|
740
743
|
*/
|
741
|
-
[[nodiscard]] auto remove(std::string document_id, const remove_options& options) const
|
744
|
+
[[nodiscard]] auto remove(std::string document_id, const remove_options& options = {}) const
|
742
745
|
-> std::future<std::pair<key_value_error_context, mutation_result>>
|
743
746
|
{
|
744
747
|
auto barrier = std::make_shared<std::promise<std::pair<key_value_error_context, mutation_result>>>();
|
@@ -792,7 +795,7 @@ class collection
|
|
792
795
|
* @since 1.0.0
|
793
796
|
* @committed
|
794
797
|
*/
|
795
|
-
[[nodiscard]] auto mutate_in(std::string document_id, mutate_in_specs specs, const mutate_in_options& options) const
|
798
|
+
[[nodiscard]] auto mutate_in(std::string document_id, mutate_in_specs specs, const mutate_in_options& options = {}) const
|
796
799
|
-> std::future<std::pair<subdocument_error_context, mutate_in_result>>
|
797
800
|
{
|
798
801
|
auto barrier = std::make_shared<std::promise<std::pair<subdocument_error_context, mutate_in_result>>>();
|
@@ -842,7 +845,7 @@ class collection
|
|
842
845
|
* @since 1.0.0
|
843
846
|
* @committed
|
844
847
|
*/
|
845
|
-
[[nodiscard]] auto lookup_in(std::string document_id, lookup_in_specs specs, const lookup_in_options& options) const
|
848
|
+
[[nodiscard]] auto lookup_in(std::string document_id, lookup_in_specs specs, const lookup_in_options& options = {}) const
|
846
849
|
-> std::future<std::pair<subdocument_error_context, lookup_in_result>>
|
847
850
|
{
|
848
851
|
auto barrier = std::make_shared<std::promise<std::pair<subdocument_error_context, lookup_in_result>>>();
|
@@ -887,7 +890,9 @@ class collection
|
|
887
890
|
* @since 1.0.0
|
888
891
|
* @committed
|
889
892
|
*/
|
890
|
-
[[nodiscard]] auto get_and_lock(std::string document_id,
|
893
|
+
[[nodiscard]] auto get_and_lock(std::string document_id,
|
894
|
+
std::chrono::seconds lock_duration,
|
895
|
+
const get_and_lock_options& options = {}) const
|
891
896
|
-> std::future<std::pair<key_value_error_context, get_result>>
|
892
897
|
{
|
893
898
|
auto barrier = std::make_shared<std::promise<std::pair<key_value_error_context, get_result>>>();
|
@@ -939,7 +944,7 @@ class collection
|
|
939
944
|
* @since 1.0.0
|
940
945
|
* @committed
|
941
946
|
*/
|
942
|
-
[[nodiscard]] auto unlock(std::string document_id, couchbase::cas cas, const unlock_options& options) const
|
947
|
+
[[nodiscard]] auto unlock(std::string document_id, couchbase::cas cas, const unlock_options& options = {}) const
|
943
948
|
-> std::future<key_value_error_context>
|
944
949
|
{
|
945
950
|
auto barrier = std::make_shared<std::promise<key_value_error_context>>();
|
@@ -983,7 +988,7 @@ class collection
|
|
983
988
|
* @since 1.0.0
|
984
989
|
* @committed
|
985
990
|
*/
|
986
|
-
[[nodiscard]] auto exists(std::string document_id, const exists_options& options) const
|
991
|
+
[[nodiscard]] auto exists(std::string document_id, const exists_options& options = {}) const
|
987
992
|
-> std::future<std::pair<key_value_error_context, exists_result>>
|
988
993
|
{
|
989
994
|
auto barrier = std::make_shared<std::promise<std::pair<key_value_error_context, exists_result>>>();
|
@@ -61,7 +61,7 @@ class collection_query_index_manager
|
|
61
61
|
* @since 1.0.0
|
62
62
|
* @committed
|
63
63
|
*/
|
64
|
-
void get_all_indexes(const get_all_query_indexes_options& options,
|
64
|
+
void get_all_indexes(const get_all_query_indexes_options& options, get_all_query_indexes_handler&& handler) const;
|
65
65
|
|
66
66
|
[[nodiscard]] auto get_all_indexes(const get_all_query_indexes_options& options) const
|
67
67
|
-> std::future<std::pair<manager_error_context, std::vector<couchbase::management::query::index>>>
|
@@ -55,7 +55,7 @@ class common_options
|
|
55
55
|
}
|
56
56
|
|
57
57
|
/**
|
58
|
-
* Specifies a custom {@link retry_strategy} for this operation.
|
58
|
+
* Specifies a custom {@link couchbase::retry_strategy} for this operation.
|
59
59
|
*
|
60
60
|
* @param strategy the retry strategy to use for this operation.
|
61
61
|
* @return this options builder for chaining purposes.
|
@@ -25,7 +25,7 @@ class cluster_options;
|
|
25
25
|
/**
|
26
26
|
* Base class for all defined configuration profiles
|
27
27
|
*
|
28
|
-
* Just implement the apply function, and register it. See @ref configuration_profiles_registry#
|
28
|
+
* Just implement the apply function, and register it. See @ref configuration_profiles_registry#register_profile()
|
29
29
|
*/
|
30
30
|
class configuration_profile
|
31
31
|
{
|
@@ -32,7 +32,7 @@ class create_primary_query_index_options : public common_options<create_primary_
|
|
32
32
|
/**
|
33
33
|
* Give the primary index a name
|
34
34
|
*
|
35
|
-
* defaults to
|
35
|
+
* defaults to `#primary`
|
36
36
|
*
|
37
37
|
* @param index_name
|
38
38
|
* @return reference to this object, for use in chaining.
|
@@ -46,7 +46,7 @@ class drop_primary_query_index_options : public common_options<drop_primary_quer
|
|
46
46
|
*
|
47
47
|
* The default is to not ignore the error.
|
48
48
|
*
|
49
|
-
* @param
|
49
|
+
* @param ignore_if_not_exists if true, we don't return an error if the index already exists
|
50
50
|
* @return reference to this object, for use in chaining.
|
51
51
|
*
|
52
52
|
* @since 1.0.0
|
@@ -34,7 +34,7 @@ class drop_query_index_options : public common_options<drop_query_index_options>
|
|
34
34
|
*
|
35
35
|
* The default is to not ignore the error.
|
36
36
|
*
|
37
|
-
* @param
|
37
|
+
* @param ignore_if_not_exists if true, we don't return an error if the index already exists
|
38
38
|
* @return reference to this object, for use in chaining.
|
39
39
|
*
|
40
40
|
* @since 1.0.0
|
@@ -21,6 +21,18 @@
|
|
21
21
|
|
22
22
|
#include <fmt/core.h>
|
23
23
|
|
24
|
+
#ifdef COUCHBASE_CXX_CLIENT_DOXYGEN
|
25
|
+
namespace fmt
|
26
|
+
{
|
27
|
+
}
|
28
|
+
#endif
|
29
|
+
|
30
|
+
/**
|
31
|
+
* Helper for fmtlib to format @ref couchbase::cas objects.
|
32
|
+
*
|
33
|
+
* @since 1.0.0
|
34
|
+
* @committed
|
35
|
+
*/
|
24
36
|
template<>
|
25
37
|
struct fmt::formatter<couchbase::cas> {
|
26
38
|
template<typename ParseContext>
|
@@ -21,6 +21,12 @@
|
|
21
21
|
|
22
22
|
#include <fmt/core.h>
|
23
23
|
|
24
|
+
/**
|
25
|
+
* Helper for fmtlib to format @ref couchbase::durability_level objects.
|
26
|
+
*
|
27
|
+
* @since 1.0.0
|
28
|
+
* @committed
|
29
|
+
*/
|
24
30
|
template<>
|
25
31
|
struct fmt::formatter<couchbase::durability_level> {
|
26
32
|
template<typename ParseContext>
|
@@ -21,6 +21,12 @@
|
|
21
21
|
|
22
22
|
#include <fmt/core.h>
|
23
23
|
|
24
|
+
/**
|
25
|
+
* Helper for fmtlib to format @ref couchbase::key_value_extended_error_info objects.
|
26
|
+
*
|
27
|
+
* @since 1.0.0
|
28
|
+
* @committed
|
29
|
+
*/
|
24
30
|
template<>
|
25
31
|
struct fmt::formatter<couchbase::key_value_extended_error_info> {
|
26
32
|
template<typename ParseContext>
|
@@ -21,6 +21,12 @@
|
|
21
21
|
|
22
22
|
#include <fmt/core.h>
|
23
23
|
|
24
|
+
/**
|
25
|
+
* Helper for fmtlib to format @ref couchbase::key_value_status_code objects.
|
26
|
+
*
|
27
|
+
* @since 1.0.0
|
28
|
+
* @committed
|
29
|
+
*/
|
24
30
|
template<>
|
25
31
|
struct fmt::formatter<couchbase::key_value_status_code> {
|
26
32
|
template<typename ParseContext>
|
@@ -21,6 +21,12 @@
|
|
21
21
|
|
22
22
|
#include <fmt/core.h>
|
23
23
|
|
24
|
+
/**
|
25
|
+
* Helper for fmtlib to format @ref couchbase::mutation_token objects.
|
26
|
+
*
|
27
|
+
* @since 1.0.0
|
28
|
+
* @committed
|
29
|
+
*/
|
24
30
|
template<>
|
25
31
|
struct fmt::formatter<couchbase::mutation_token> {
|
26
32
|
template<typename ParseContext>
|