couchbase 4.4.2 → 4.4.4
Sign up to get free protection for your applications and to get access to all the features.
- package/BUILDING.md +182 -0
- package/CMakeLists.txt +13 -0
- package/CONTRIBUTING.md +1 -1
- package/README.md +4 -2
- package/deps/couchbase-cxx-cache/boringssl/e31ea00c1ea52052d2d78d44006cc88c80fa24a9/boringssl/src/BUILDING.md +206 -0
- package/deps/couchbase-cxx-client/CMakeLists.txt +18 -13
- package/deps/couchbase-cxx-client/README.md +2 -2
- package/deps/couchbase-cxx-client/cmake/APKBUILD.in +54 -0
- package/deps/couchbase-cxx-client/cmake/CompilerWarnings.cmake +0 -5
- package/deps/couchbase-cxx-client/cmake/Packaging.cmake +177 -10
- package/deps/couchbase-cxx-client/cmake/RPath.cmake +10 -0
- package/deps/couchbase-cxx-client/cmake/Testing.cmake +1 -1
- package/deps/couchbase-cxx-client/cmake/VersionInfo.cmake +28 -2
- package/deps/couchbase-cxx-client/cmake/build_version.hxx.in +1 -0
- package/deps/couchbase-cxx-client/cmake/couchbase-cxx-client.spec.in +45 -6
- package/deps/couchbase-cxx-client/cmake/couchbase_cxx_client.pc.in +2 -2
- package/deps/couchbase-cxx-client/cmake/debian/changelog.in +5 -0
- package/deps/couchbase-cxx-client/cmake/debian/compat +1 -0
- package/deps/couchbase-cxx-client/cmake/debian/control +40 -0
- package/deps/couchbase-cxx-client/cmake/debian/rules +41 -0
- package/deps/couchbase-cxx-client/cmake/debian/source/format +1 -0
- package/deps/couchbase-cxx-client/core/agent_group.cxx +8 -0
- package/deps/couchbase-cxx-client/core/agent_group.hxx +4 -0
- package/deps/couchbase-cxx-client/core/bucket.cxx +16 -20
- package/deps/couchbase-cxx-client/core/bucket.hxx +12 -12
- package/deps/couchbase-cxx-client/core/cluster.cxx +44 -52
- package/deps/couchbase-cxx-client/core/cluster_agent.cxx +8 -0
- package/deps/couchbase-cxx-client/core/cluster_agent.hxx +4 -0
- package/deps/couchbase-cxx-client/core/collections_component.cxx +2 -2
- package/deps/couchbase-cxx-client/core/columnar/agent.cxx +2 -2
- package/deps/couchbase-cxx-client/core/columnar/agent.hxx +1 -1
- package/deps/couchbase-cxx-client/core/columnar/management_component.cxx +3 -3
- package/deps/couchbase-cxx-client/core/columnar/query_component.cxx +103 -45
- package/deps/couchbase-cxx-client/core/columnar/query_component.hxx +1 -0
- package/deps/couchbase-cxx-client/core/free_form_http_request.hxx +8 -0
- package/deps/couchbase-cxx-client/core/http_component.cxx +55 -24
- package/deps/couchbase-cxx-client/core/http_component.hxx +4 -0
- package/deps/couchbase-cxx-client/core/impl/analytics.cxx +1 -0
- package/deps/couchbase-cxx-client/core/impl/analytics_index_manager.cxx +15 -15
- package/deps/couchbase-cxx-client/core/impl/bootstrap_error.hxx +10 -2
- package/deps/couchbase-cxx-client/core/impl/bucket.cxx +1 -1
- package/deps/couchbase-cxx-client/core/impl/bucket_manager.cxx +6 -6
- package/deps/couchbase-cxx-client/core/impl/cluster.cxx +36 -40
- package/deps/couchbase-cxx-client/core/impl/collection.cxx +29 -5
- package/deps/couchbase-cxx-client/core/impl/collection_manager.cxx +5 -5
- package/deps/couchbase-cxx-client/core/impl/error.cxx +24 -3
- package/deps/couchbase-cxx-client/core/impl/get_replica.hxx +2 -0
- package/deps/couchbase-cxx-client/core/impl/lookup_in_replica.hxx +2 -0
- package/deps/couchbase-cxx-client/core/impl/observe_poll.cxx +13 -5
- package/deps/couchbase-cxx-client/core/impl/observe_poll.hxx +1 -3
- package/deps/couchbase-cxx-client/core/impl/observe_seqno.hxx +2 -0
- package/deps/couchbase-cxx-client/core/impl/query.cxx +1 -0
- package/deps/couchbase-cxx-client/core/impl/query_index_manager.cxx +6 -6
- package/deps/couchbase-cxx-client/core/impl/scan_result.cxx +1 -1
- package/deps/couchbase-cxx-client/core/impl/search.cxx +2 -0
- package/deps/couchbase-cxx-client/core/impl/search_index_manager.cxx +12 -12
- package/deps/couchbase-cxx-client/core/io/http_command.hxx +31 -20
- package/deps/couchbase-cxx-client/core/io/http_session.cxx +5 -0
- package/deps/couchbase-cxx-client/core/io/http_session.hxx +17 -4
- package/deps/couchbase-cxx-client/core/io/http_session_manager.hxx +97 -49
- package/deps/couchbase-cxx-client/core/io/mcbp_command.hxx +15 -14
- package/deps/couchbase-cxx-client/core/io/mcbp_session.cxx +48 -33
- package/deps/couchbase-cxx-client/core/io/streams.cxx +256 -0
- package/deps/couchbase-cxx-client/core/io/streams.hxx +31 -155
- package/deps/couchbase-cxx-client/core/logger/configuration.hxx +5 -0
- package/deps/couchbase-cxx-client/core/logger/custom_rotating_file_sink.cxx +2 -3
- package/deps/couchbase-cxx-client/core/logger/logger.cxx +39 -7
- package/deps/couchbase-cxx-client/core/logger/logger.hxx +7 -0
- package/deps/couchbase-cxx-client/core/meta/features.hxx +11 -0
- package/deps/couchbase-cxx-client/core/meta/version.cxx +47 -6
- package/deps/couchbase-cxx-client/core/metrics/meter_wrapper.cxx +188 -0
- package/deps/couchbase-cxx-client/core/metrics/meter_wrapper.hxx +73 -0
- package/deps/couchbase-cxx-client/core/operations/document_analytics.cxx +23 -17
- package/deps/couchbase-cxx-client/core/operations/document_analytics.hxx +1 -0
- package/deps/couchbase-cxx-client/core/operations/document_append.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/document_decrement.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/document_exists.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/document_get.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/document_get_all_replicas.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/document_get_and_lock.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/document_get_and_touch.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/document_get_any_replica.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/document_get_projected.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/document_increment.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/document_insert.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/document_lookup_in.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/document_lookup_in_all_replicas.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/document_lookup_in_any_replica.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/document_mutate_in.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/document_prepend.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/document_query.hxx +1 -0
- package/deps/couchbase-cxx-client/core/operations/document_remove.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/document_replace.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/document_search.hxx +1 -0
- package/deps/couchbase-cxx-client/core/operations/document_touch.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/document_unlock.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/document_upsert.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/document_view.hxx +1 -0
- package/deps/couchbase-cxx-client/core/operations/http_noop.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/analytics_dataset_create.hxx +1 -0
- package/deps/couchbase-cxx-client/core/operations/management/analytics_dataset_drop.hxx +1 -0
- package/deps/couchbase-cxx-client/core/operations/management/analytics_dataset_get_all.hxx +1 -0
- package/deps/couchbase-cxx-client/core/operations/management/analytics_dataverse_create.hxx +1 -0
- package/deps/couchbase-cxx-client/core/operations/management/analytics_dataverse_drop.hxx +1 -0
- package/deps/couchbase-cxx-client/core/operations/management/analytics_get_pending_mutations.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/analytics_index_create.hxx +1 -0
- package/deps/couchbase-cxx-client/core/operations/management/analytics_index_drop.hxx +1 -0
- package/deps/couchbase-cxx-client/core/operations/management/analytics_index_get_all.hxx +1 -0
- package/deps/couchbase-cxx-client/core/operations/management/analytics_link_connect.hxx +1 -0
- package/deps/couchbase-cxx-client/core/operations/management/analytics_link_create.hxx +1 -0
- package/deps/couchbase-cxx-client/core/operations/management/analytics_link_disconnect.hxx +1 -0
- package/deps/couchbase-cxx-client/core/operations/management/analytics_link_drop.hxx +1 -0
- package/deps/couchbase-cxx-client/core/operations/management/analytics_link_get_all.cxx +23 -15
- package/deps/couchbase-cxx-client/core/operations/management/analytics_link_get_all.hxx +4 -3
- package/deps/couchbase-cxx-client/core/operations/management/analytics_link_replace.hxx +1 -0
- package/deps/couchbase-cxx-client/core/operations/management/bucket_create.hxx +1 -0
- package/deps/couchbase-cxx-client/core/operations/management/bucket_describe.cxx +2 -1
- package/deps/couchbase-cxx-client/core/operations/management/bucket_describe.hxx +1 -0
- package/deps/couchbase-cxx-client/core/operations/management/bucket_drop.cxx +3 -1
- package/deps/couchbase-cxx-client/core/operations/management/bucket_drop.hxx +1 -0
- package/deps/couchbase-cxx-client/core/operations/management/bucket_flush.cxx +3 -1
- package/deps/couchbase-cxx-client/core/operations/management/bucket_flush.hxx +1 -0
- package/deps/couchbase-cxx-client/core/operations/management/bucket_get.cxx +3 -1
- package/deps/couchbase-cxx-client/core/operations/management/bucket_get.hxx +1 -0
- package/deps/couchbase-cxx-client/core/operations/management/bucket_get_all.hxx +1 -0
- package/deps/couchbase-cxx-client/core/operations/management/bucket_update.cxx +3 -1
- package/deps/couchbase-cxx-client/core/operations/management/bucket_update.hxx +1 -0
- package/deps/couchbase-cxx-client/core/operations/management/change_password.hxx +1 -0
- package/deps/couchbase-cxx-client/core/operations/management/cluster_describe.hxx +1 -0
- package/deps/couchbase-cxx-client/core/operations/management/cluster_developer_preview_enable.hxx +1 -0
- package/deps/couchbase-cxx-client/core/operations/management/collection_create.cxx +3 -2
- package/deps/couchbase-cxx-client/core/operations/management/collection_create.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/collection_drop.cxx +5 -2
- package/deps/couchbase-cxx-client/core/operations/management/collection_drop.hxx +1 -0
- package/deps/couchbase-cxx-client/core/operations/management/collection_update.cxx +4 -2
- package/deps/couchbase-cxx-client/core/operations/management/collection_update.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/collections_manifest_get.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/eventing_deploy_function.hxx +3 -2
- package/deps/couchbase-cxx-client/core/operations/management/eventing_drop_function.hxx +3 -2
- package/deps/couchbase-cxx-client/core/operations/management/eventing_get_all_functions.hxx +3 -2
- package/deps/couchbase-cxx-client/core/operations/management/eventing_get_function.hxx +3 -2
- package/deps/couchbase-cxx-client/core/operations/management/eventing_get_status.hxx +3 -2
- package/deps/couchbase-cxx-client/core/operations/management/eventing_pause_function.hxx +3 -2
- package/deps/couchbase-cxx-client/core/operations/management/eventing_resume_function.hxx +3 -2
- package/deps/couchbase-cxx-client/core/operations/management/eventing_undeploy_function.hxx +3 -2
- package/deps/couchbase-cxx-client/core/operations/management/eventing_upsert_function.hxx +3 -2
- package/deps/couchbase-cxx-client/core/operations/management/freeform.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/group_drop.hxx +1 -0
- package/deps/couchbase-cxx-client/core/operations/management/group_get.hxx +1 -0
- package/deps/couchbase-cxx-client/core/operations/management/group_get_all.hxx +1 -0
- package/deps/couchbase-cxx-client/core/operations/management/group_upsert.cxx +3 -3
- package/deps/couchbase-cxx-client/core/operations/management/group_upsert.hxx +1 -0
- package/deps/couchbase-cxx-client/core/operations/management/query_index_build.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/query_index_build_deferred.hxx +3 -0
- package/deps/couchbase-cxx-client/core/operations/management/query_index_create.hxx +1 -0
- package/deps/couchbase-cxx-client/core/operations/management/query_index_drop.hxx +1 -0
- package/deps/couchbase-cxx-client/core/operations/management/query_index_get_all.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/query_index_get_all_deferred.hxx +3 -0
- package/deps/couchbase-cxx-client/core/operations/management/role_get_all.hxx +1 -0
- package/deps/couchbase-cxx-client/core/operations/management/scope_create.cxx +2 -1
- package/deps/couchbase-cxx-client/core/operations/management/scope_create.hxx +1 -0
- package/deps/couchbase-cxx-client/core/operations/management/scope_drop.cxx +4 -1
- package/deps/couchbase-cxx-client/core/operations/management/scope_drop.hxx +1 -0
- package/deps/couchbase-cxx-client/core/operations/management/scope_get_all.cxx +3 -1
- package/deps/couchbase-cxx-client/core/operations/management/scope_get_all.hxx +1 -0
- package/deps/couchbase-cxx-client/core/operations/management/search_get_stats.hxx +1 -0
- package/deps/couchbase-cxx-client/core/operations/management/search_index_analyze_document.cxx +3 -2
- package/deps/couchbase-cxx-client/core/operations/management/search_index_analyze_document.hxx +1 -0
- package/deps/couchbase-cxx-client/core/operations/management/search_index_control_ingest.cxx +3 -2
- package/deps/couchbase-cxx-client/core/operations/management/search_index_control_ingest.hxx +1 -0
- package/deps/couchbase-cxx-client/core/operations/management/search_index_control_plan_freeze.cxx +3 -2
- package/deps/couchbase-cxx-client/core/operations/management/search_index_control_plan_freeze.hxx +1 -0
- package/deps/couchbase-cxx-client/core/operations/management/search_index_control_query.cxx +3 -2
- package/deps/couchbase-cxx-client/core/operations/management/search_index_control_query.hxx +1 -0
- package/deps/couchbase-cxx-client/core/operations/management/search_index_drop.cxx +5 -2
- package/deps/couchbase-cxx-client/core/operations/management/search_index_drop.hxx +1 -0
- package/deps/couchbase-cxx-client/core/operations/management/search_index_get.cxx +5 -2
- package/deps/couchbase-cxx-client/core/operations/management/search_index_get.hxx +1 -0
- package/deps/couchbase-cxx-client/core/operations/management/search_index_get_all.cxx +4 -2
- package/deps/couchbase-cxx-client/core/operations/management/search_index_get_all.hxx +1 -0
- package/deps/couchbase-cxx-client/core/operations/management/search_index_get_documents_count.cxx +3 -2
- package/deps/couchbase-cxx-client/core/operations/management/search_index_get_documents_count.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/search_index_get_stats.hxx +1 -0
- package/deps/couchbase-cxx-client/core/operations/management/search_index_upsert.cxx +5 -2
- package/deps/couchbase-cxx-client/core/operations/management/search_index_upsert.hxx +1 -0
- package/deps/couchbase-cxx-client/core/operations/management/user_drop.hxx +1 -0
- package/deps/couchbase-cxx-client/core/operations/management/user_get.hxx +1 -0
- package/deps/couchbase-cxx-client/core/operations/management/user_get_all.hxx +1 -0
- package/deps/couchbase-cxx-client/core/operations/management/user_upsert.cxx +3 -3
- package/deps/couchbase-cxx-client/core/operations/management/user_upsert.hxx +1 -0
- package/deps/couchbase-cxx-client/core/operations/management/view_index_drop.cxx +2 -1
- package/deps/couchbase-cxx-client/core/operations/management/view_index_drop.hxx +1 -0
- package/deps/couchbase-cxx-client/core/operations/management/view_index_get.cxx +2 -1
- package/deps/couchbase-cxx-client/core/operations/management/view_index_get.hxx +1 -0
- package/deps/couchbase-cxx-client/core/operations/management/view_index_get_all.cxx +3 -1
- package/deps/couchbase-cxx-client/core/operations/management/view_index_get_all.hxx +2 -0
- package/deps/couchbase-cxx-client/core/operations/management/view_index_upsert.cxx +2 -1
- package/deps/couchbase-cxx-client/core/operations/management/view_index_upsert.hxx +1 -0
- package/deps/couchbase-cxx-client/core/origin.cxx +37 -17
- package/deps/couchbase-cxx-client/core/platform/base64.cc +1 -1
- package/deps/couchbase-cxx-client/core/platform/random.cc +2 -0
- package/deps/couchbase-cxx-client/core/platform/uuid.h +6 -6
- package/deps/couchbase-cxx-client/core/row_streamer.cxx +1 -1
- package/deps/couchbase-cxx-client/core/sasl/scram-sha/stringutils.cc +1 -1
- package/deps/couchbase-cxx-client/core/sasl/scram-sha/stringutils.h +4 -4
- package/deps/couchbase-cxx-client/core/topology/configuration.hxx +2 -0
- package/deps/couchbase-cxx-client/core/topology/configuration_json.hxx +8 -0
- package/deps/couchbase-cxx-client/core/tracing/constants.hxx +3 -0
- package/deps/couchbase-cxx-client/core/tracing/tracer_wrapper.cxx +87 -0
- package/deps/couchbase-cxx-client/core/tracing/tracer_wrapper.hxx +57 -0
- package/deps/couchbase-cxx-client/core/transactions/async_attempt_context.hxx +9 -21
- package/deps/couchbase-cxx-client/core/transactions/attempt_context.hxx +6 -33
- package/deps/couchbase-cxx-client/core/transactions/attempt_context_impl.cxx +57 -56
- package/deps/couchbase-cxx-client/core/transactions/attempt_context_impl.hxx +17 -18
- package/deps/couchbase-cxx-client/core/transactions/staged_mutation.cxx +2 -2
- package/deps/couchbase-cxx-client/core/transactions/transaction_context.cxx +2 -2
- package/deps/couchbase-cxx-client/core/transactions/transaction_get_result.hxx +0 -20
- package/deps/couchbase-cxx-client/core/transactions/transactions.cxx +2 -2
- package/deps/couchbase-cxx-client/core/utils/connection_string.cxx +128 -52
- package/deps/couchbase-cxx-client/couchbase/analytics_options.hxx +4 -3
- package/deps/couchbase-cxx-client/couchbase/codec/tao_json_serializer.hxx +1 -1
- package/deps/couchbase-cxx-client/couchbase/common_options.hxx +16 -1
- package/deps/couchbase-cxx-client/couchbase/metrics/otel_meter.hxx +16 -20
- package/deps/couchbase-cxx-client/couchbase/mutate_in_specs.hxx +2 -2
- package/deps/couchbase-cxx-client/couchbase/query_options.hxx +4 -3
- package/deps/couchbase-cxx-client/couchbase/search_options.hxx +1 -1
- package/dist/analyticsindexmanager.d.ts +98 -14
- package/dist/analyticsindexmanager.js +452 -411
- package/dist/binding.d.ts +53 -4
- package/dist/bindingutilities.d.ts +26 -1
- package/dist/bindingutilities.js +108 -1
- package/dist/couchbase.d.ts +3 -1
- package/dist/couchbase.js +2 -0
- package/dist/rangeScan.d.ts +1 -1
- package/dist/rangeScan.js +1 -1
- package/dist/transactions.d.ts +34 -3
- package/dist/transactions.js +25 -18
- package/dist/transcoders.d.ts +68 -0
- package/dist/transcoders.js +194 -1
- package/dist/usermanager.d.ts +14 -14
- package/dist/usermanager.js +178 -228
- package/dist/utilities.js +4 -6
- package/dist/utilities_internal.js +1 -2
- package/package.json +9 -8
- package/src/binding.cpp +13 -13
- package/src/connection.cpp +22 -0
- package/src/connection.hpp +12 -0
- package/src/connection_autogen.cpp +100 -0
- package/src/jstocbpp_autogen.hpp +315 -8
- package/src/jstocbpp_transactions.hpp +1 -2
- package/tools/gen-bindings-js.js +38 -3
- package/tools/gen-bindings-json.py +575 -328
@@ -587,9 +587,9 @@ attempt_context_impl::create_document_metadata(
|
|
587
587
|
}
|
588
588
|
|
589
589
|
void
|
590
|
-
attempt_context_impl::
|
591
|
-
|
592
|
-
|
590
|
+
attempt_context_impl::replace(const transaction_get_result& document,
|
591
|
+
codec::encoded_value content,
|
592
|
+
Callback&& cb)
|
593
593
|
{
|
594
594
|
|
595
595
|
if (op_list_.get_mode().is_query()) {
|
@@ -852,19 +852,19 @@ attempt_context_impl::create_staged_replace(const transaction_get_result& docume
|
|
852
852
|
}
|
853
853
|
|
854
854
|
auto
|
855
|
-
attempt_context_impl::
|
856
|
-
|
855
|
+
attempt_context_impl::replace(const transaction_get_result& document,
|
856
|
+
codec::encoded_value content) -> transaction_get_result
|
857
857
|
{
|
858
858
|
auto barrier = std::make_shared<std::promise<transaction_get_result>>();
|
859
859
|
auto f = barrier->get_future();
|
860
|
-
|
861
|
-
|
862
|
-
|
863
|
-
|
864
|
-
|
865
|
-
|
866
|
-
|
867
|
-
|
860
|
+
replace(document,
|
861
|
+
std::move(content),
|
862
|
+
[barrier](const std::exception_ptr& err, std::optional<transaction_get_result> res) {
|
863
|
+
if (err) {
|
864
|
+
return barrier->set_exception(err);
|
865
|
+
}
|
866
|
+
barrier->set_value(std::move(*res));
|
867
|
+
});
|
868
868
|
return f.get();
|
869
869
|
}
|
870
870
|
|
@@ -873,12 +873,12 @@ attempt_context_impl::replace_raw(couchbase::transactions::transaction_get_resul
|
|
873
873
|
codec::encoded_value content,
|
874
874
|
couchbase::transactions::async_result_handler&& handler)
|
875
875
|
{
|
876
|
-
|
877
|
-
|
878
|
-
|
879
|
-
|
880
|
-
|
881
|
-
|
876
|
+
replace(core::transactions::transaction_get_result(doc),
|
877
|
+
std::move(content),
|
878
|
+
[handler = std::move(handler)](const std::exception_ptr& err,
|
879
|
+
std::optional<transaction_get_result> res) mutable {
|
880
|
+
wrap_callback_for_async_public_api(err, std::move(res), std::move(handler));
|
881
|
+
});
|
882
882
|
}
|
883
883
|
|
884
884
|
auto
|
@@ -888,7 +888,7 @@ attempt_context_impl::replace_raw(const couchbase::transactions::transaction_get
|
|
888
888
|
{
|
889
889
|
return wrap_call_for_public_api(
|
890
890
|
[self = shared_from_this(), doc, content = std::move(content)]() -> transaction_get_result {
|
891
|
-
return self->
|
891
|
+
return self->replace(transaction_get_result(doc), content);
|
892
892
|
});
|
893
893
|
}
|
894
894
|
|
@@ -900,8 +900,8 @@ attempt_context_impl::insert_raw(const collection& coll,
|
|
900
900
|
{
|
901
901
|
return wrap_call_for_public_api(
|
902
902
|
[self = shared_from_this(), coll, &id, content = std::move(content)]() mutable {
|
903
|
-
return self->
|
904
|
-
|
903
|
+
return self->insert({ coll.bucket_name(), coll.scope_name(), coll.name(), id },
|
904
|
+
std::move(content));
|
905
905
|
});
|
906
906
|
}
|
907
907
|
|
@@ -911,35 +911,35 @@ attempt_context_impl::insert_raw(const collection& coll,
|
|
911
911
|
codec::encoded_value content,
|
912
912
|
couchbase::transactions::async_result_handler&& handler)
|
913
913
|
{
|
914
|
-
|
915
|
-
|
916
|
-
|
917
|
-
|
918
|
-
|
919
|
-
|
914
|
+
insert({ coll.bucket_name(), coll.scope_name(), coll.name(), std::move(id) },
|
915
|
+
std::move(content),
|
916
|
+
[handler = std::move(handler)](const std::exception_ptr& err,
|
917
|
+
std::optional<transaction_get_result> res) mutable {
|
918
|
+
wrap_callback_for_async_public_api(err, std::move(res), std::move(handler));
|
919
|
+
});
|
920
920
|
}
|
921
921
|
|
922
922
|
auto
|
923
|
-
attempt_context_impl::
|
924
|
-
|
923
|
+
attempt_context_impl::insert(const core::document_id& id,
|
924
|
+
codec::encoded_value content) -> transaction_get_result
|
925
925
|
{
|
926
926
|
auto barrier = std::make_shared<std::promise<transaction_get_result>>();
|
927
927
|
auto f = barrier->get_future();
|
928
|
-
|
929
|
-
|
930
|
-
|
931
|
-
|
932
|
-
|
933
|
-
|
934
|
-
|
935
|
-
|
928
|
+
insert(id,
|
929
|
+
std::move(content),
|
930
|
+
[barrier](const std::exception_ptr& err, std::optional<transaction_get_result> res) {
|
931
|
+
if (err) {
|
932
|
+
return barrier->set_exception(err);
|
933
|
+
}
|
934
|
+
barrier->set_value(std::move(*res));
|
935
|
+
});
|
936
936
|
return f.get();
|
937
937
|
}
|
938
938
|
|
939
939
|
void
|
940
|
-
attempt_context_impl::
|
941
|
-
|
942
|
-
|
940
|
+
attempt_context_impl::insert(const core::document_id& id,
|
941
|
+
codec::encoded_value content,
|
942
|
+
Callback&& cb)
|
943
943
|
{
|
944
944
|
if (op_list_.get_mode().is_query()) {
|
945
945
|
return insert_raw_with_query(id, std::move(content), std::move(cb));
|
@@ -2975,7 +2975,7 @@ attempt_context_impl::do_get(const core::document_id& id,
|
|
2975
2975
|
allow_replica,
|
2976
2976
|
resolving_missing_atr_entry = std::move(resolving_missing_atr_entry),
|
2977
2977
|
cb = std::move(cb)](std::optional<error_class> ec,
|
2978
|
-
std::optional<std::string
|
2978
|
+
const std::optional<std::string>& err_message,
|
2979
2979
|
std::optional<transaction_get_result> doc) mutable {
|
2980
2980
|
if (!ec && !doc) {
|
2981
2981
|
// it just isn't there.
|
@@ -3101,20 +3101,21 @@ template<typename LookupInRequest, typename Callback>
|
|
3101
3101
|
void
|
3102
3102
|
execute_lookup(attempt_context_impl* ctx, LookupInRequest& req, Callback&& cb)
|
3103
3103
|
{
|
3104
|
-
ctx->overall()->cluster_ref().execute(
|
3105
|
-
|
3106
|
-
|
3107
|
-
|
3108
|
-
|
3109
|
-
|
3110
|
-
|
3111
|
-
|
3112
|
-
|
3104
|
+
ctx->overall()->cluster_ref().execute(
|
3105
|
+
req, [ctx, cb = std::forward<Callback>(cb)](const auto& resp) {
|
3106
|
+
auto ec = error_class_from_response(resp);
|
3107
|
+
if (ec) {
|
3108
|
+
CB_ATTEMPT_CTX_LOG_TRACE(ctx, "get_doc got error {} : {}", resp.ctx.ec().message(), *ec);
|
3109
|
+
switch (*ec) {
|
3110
|
+
case FAIL_PATH_NOT_FOUND:
|
3111
|
+
return cb(ec, resp.ctx.ec().message(), transaction_get_result::create_from(resp));
|
3112
|
+
default:
|
3113
|
+
return cb(ec, resp.ctx.ec().message(), std::nullopt);
|
3114
|
+
}
|
3115
|
+
} else {
|
3116
|
+
return cb({}, {}, transaction_get_result::create_from(resp));
|
3113
3117
|
}
|
3114
|
-
}
|
3115
|
-
return cb({}, {}, transaction_get_result::create_from(resp));
|
3116
|
-
}
|
3117
|
-
});
|
3118
|
+
});
|
3118
3119
|
}
|
3119
3120
|
} // namespace
|
3120
3121
|
|
@@ -3161,7 +3162,7 @@ attempt_context_impl::get_doc(const core::document_id& id,
|
|
3161
3162
|
template<typename Handler, typename Delay>
|
3162
3163
|
void
|
3163
3164
|
attempt_context_impl::create_staged_insert_error_handler(const core::document_id& id,
|
3164
|
-
codec::encoded_value content,
|
3165
|
+
const codec::encoded_value& content,
|
3165
3166
|
std::uint64_t cas,
|
3166
3167
|
Delay&& delay,
|
3167
3168
|
const std::string& op_id,
|
@@ -92,37 +92,36 @@ private:
|
|
92
92
|
// transaction_context needs access to the two functions below
|
93
93
|
friend class transaction_context;
|
94
94
|
|
95
|
+
void insert(const core::document_id& id,
|
96
|
+
codec::encoded_value content,
|
97
|
+
core::transactions::async_attempt_context::Callback&& cb) override;
|
98
|
+
|
99
|
+
auto insert(const core::document_id& id,
|
100
|
+
codec::encoded_value content) -> core::transactions::transaction_get_result override;
|
101
|
+
|
102
|
+
void replace(const transaction_get_result& document,
|
103
|
+
codec::encoded_value content,
|
104
|
+
core::transactions::async_attempt_context::Callback&& cb) override;
|
105
|
+
|
106
|
+
auto replace(const transaction_get_result& document,
|
107
|
+
codec::encoded_value content) -> transaction_get_result override;
|
108
|
+
|
95
109
|
auto insert_raw(const collection& coll, const std::string& id, codec::encoded_value content)
|
96
110
|
-> std::pair<couchbase::error, couchbase::transactions::transaction_get_result> override;
|
97
|
-
auto insert_raw(const core::document_id& id, codec::encoded_value content)
|
98
|
-
-> core::transactions::transaction_get_result override;
|
99
111
|
|
100
112
|
void insert_raw(const collection& coll,
|
101
113
|
std::string id,
|
102
114
|
codec::encoded_value content,
|
103
115
|
couchbase::transactions::async_result_handler&& handler) override;
|
104
116
|
|
105
|
-
void insert_raw(
|
106
|
-
const core::document_id& id,
|
107
|
-
codec::encoded_value content,
|
108
|
-
std::function<void(std::exception_ptr, std::optional<transaction_get_result>)>&& cb) override;
|
109
|
-
|
110
117
|
auto replace_raw(const couchbase::transactions::transaction_get_result& doc,
|
111
118
|
codec::encoded_value content)
|
112
119
|
-> std::pair<couchbase::error, couchbase::transactions::transaction_get_result> override;
|
113
120
|
|
114
|
-
auto replace_raw(const transaction_get_result& document,
|
115
|
-
codec::encoded_value content) -> transaction_get_result override;
|
116
|
-
|
117
121
|
void replace_raw(couchbase::transactions::transaction_get_result doc,
|
118
122
|
codec::encoded_value content,
|
119
123
|
couchbase::transactions::async_result_handler&& handler) override;
|
120
124
|
|
121
|
-
void replace_raw(
|
122
|
-
const transaction_get_result& document,
|
123
|
-
codec::encoded_value content,
|
124
|
-
std::function<void(std::exception_ptr, std::optional<transaction_get_result>)>&& cb) override;
|
125
|
-
|
126
125
|
void remove_staged_insert(const core::document_id& id, VoidCallback&& cb);
|
127
126
|
|
128
127
|
void get_with_query(
|
@@ -200,7 +199,7 @@ private:
|
|
200
199
|
std::exception_ptr&& err)
|
201
200
|
{
|
202
201
|
try {
|
203
|
-
std::rethrow_exception(
|
202
|
+
std::rethrow_exception(err);
|
204
203
|
} catch (const transaction_operation_failed& e) {
|
205
204
|
// if this is a transaction_operation_failed, we need to cache it before
|
206
205
|
// moving on...
|
@@ -463,8 +462,8 @@ private:
|
|
463
462
|
|
464
463
|
template<typename Handler, typename Delay>
|
465
464
|
void create_staged_insert_error_handler(const core::document_id& id,
|
466
|
-
codec::encoded_value content,
|
467
|
-
uint64_t cas,
|
465
|
+
const codec::encoded_value& content,
|
466
|
+
std::uint64_t cas,
|
468
467
|
Delay&& delay,
|
469
468
|
const std::string& op_id,
|
470
469
|
Handler&& cb,
|
@@ -568,7 +568,7 @@ staged_mutation_queue::commit_doc(const std::shared_ptr<attempt_context_impl>& c
|
|
568
568
|
res,
|
569
569
|
item,
|
570
570
|
[ambiguity_resolution_mode, cas_zero_mode, handler = std::move(handler)](
|
571
|
-
auto e) mutable {
|
571
|
+
const auto& e) mutable {
|
572
572
|
if (e) {
|
573
573
|
return handler(e, ambiguity_resolution_mode, cas_zero_mode);
|
574
574
|
}
|
@@ -610,7 +610,7 @@ staged_mutation_queue::commit_doc(const std::shared_ptr<attempt_context_impl>& c
|
|
610
610
|
res,
|
611
611
|
item,
|
612
612
|
[ambiguity_resolution_mode, cas_zero_mode, handler = std::move(handler)](
|
613
|
-
auto e) mutable {
|
613
|
+
const auto& e) mutable {
|
614
614
|
if (e) {
|
615
615
|
return handler(e, ambiguity_resolution_mode, cas_zero_mode);
|
616
616
|
}
|
@@ -180,7 +180,7 @@ transaction_context::insert(const core::document_id& id,
|
|
180
180
|
async_attempt_context::Callback&& cb)
|
181
181
|
{
|
182
182
|
if (current_attempt_context_) {
|
183
|
-
return current_attempt_context_->
|
183
|
+
return current_attempt_context_->insert(id, std::move(content), std::move(cb));
|
184
184
|
}
|
185
185
|
throw transaction_operation_failed(FAIL_OTHER, "no current attempt context");
|
186
186
|
}
|
@@ -191,7 +191,7 @@ transaction_context::replace(const transaction_get_result& doc,
|
|
191
191
|
async_attempt_context::Callback&& cb)
|
192
192
|
{
|
193
193
|
if (current_attempt_context_) {
|
194
|
-
return current_attempt_context_->
|
194
|
+
return current_attempt_context_->replace(doc, std::move(content), std::move(cb));
|
195
195
|
}
|
196
196
|
throw transaction_operation_failed(FAIL_OTHER, "no current attempt context");
|
197
197
|
}
|
@@ -199,26 +199,6 @@ public:
|
|
199
199
|
return os;
|
200
200
|
}
|
201
201
|
|
202
|
-
/**
|
203
|
-
* Content of the document.
|
204
|
-
*
|
205
|
-
* @return content of the document.
|
206
|
-
*/
|
207
|
-
template<typename Document,
|
208
|
-
typename Transcoder = codec::default_json_transcoder,
|
209
|
-
std::enable_if_t<!codec::is_transcoder_v<Document>, bool> = true,
|
210
|
-
std::enable_if_t<codec::is_transcoder_v<Transcoder>, bool> = true>
|
211
|
-
[[nodiscard]] auto content() const -> Document
|
212
|
-
{
|
213
|
-
return Transcoder::template decode<Document>(content_);
|
214
|
-
}
|
215
|
-
|
216
|
-
template<typename Transcoder, std::enable_if_t<codec::is_transcoder_v<Transcoder>, bool> = true>
|
217
|
-
[[nodiscard]] auto content() const -> typename Transcoder::document_type
|
218
|
-
{
|
219
|
-
return Transcoder::decode(content_);
|
220
|
-
}
|
221
|
-
|
222
202
|
/**
|
223
203
|
* Content of the document as raw byte vector
|
224
204
|
*
|
@@ -99,7 +99,7 @@ transactions::create(core::cluster cluster,
|
|
99
99
|
{
|
100
100
|
auto barrier =
|
101
101
|
std::make_shared<std::promise<std::pair<std::error_code, std::shared_ptr<transactions>>>>();
|
102
|
-
create(std::move(cluster), config, [barrier](auto ec, auto txns) mutable {
|
102
|
+
create(std::move(cluster), config, [barrier](auto ec, const auto& txns) mutable {
|
103
103
|
barrier->set_value({ ec, txns });
|
104
104
|
});
|
105
105
|
return barrier->get_future();
|
@@ -171,7 +171,7 @@ wrap_public_api_run(transactions& txns,
|
|
171
171
|
std::size_t max_attempts,
|
172
172
|
Handler&& fn) -> ::couchbase::transactions::transaction_result
|
173
173
|
{
|
174
|
-
return wrap_run(txns, config, max_attempts, [fn = std::forward<Handler>(fn)](auto ctx) {
|
174
|
+
return wrap_run(txns, config, max_attempts, [fn = std::forward<Handler>(fn)](const auto& ctx) {
|
175
175
|
const couchbase::error err = fn(ctx);
|
176
176
|
if (err && err.ec() != errc::transaction_op::transaction_op_failed) {
|
177
177
|
if (err.ec().category() == core::impl::transaction_op_category()) {
|
@@ -34,7 +34,7 @@ using namespace tao::pegtl;
|
|
34
34
|
|
35
35
|
struct bucket_name : seq<uri::segment_nz> {
|
36
36
|
};
|
37
|
-
using param_key = star<sor<abnf::ALPHA, abnf::DIGIT, one<'_'>>>;
|
37
|
+
using param_key = star<sor<abnf::ALPHA, abnf::DIGIT, one<'_', '.'>>>;
|
38
38
|
using param_value = star<sor<minus<uri::pchar, one<'=', '&', '?'>>, one<'/'>>>;
|
39
39
|
struct param : seq<param_key, one<'='>, param_value> {
|
40
40
|
};
|
@@ -237,38 +237,69 @@ parse_option(bool& receiver,
|
|
237
237
|
}
|
238
238
|
|
239
239
|
void
|
240
|
-
parse_option(
|
240
|
+
parse_option(io::ip_protocol& receiver,
|
241
241
|
const std::string& name,
|
242
242
|
const std::string& value,
|
243
243
|
std::vector<std::string>& warnings)
|
244
244
|
{
|
245
|
-
if (value == "
|
246
|
-
receiver =
|
247
|
-
} else if (value == "
|
248
|
-
receiver =
|
245
|
+
if (value == "any") {
|
246
|
+
receiver = io::ip_protocol::any;
|
247
|
+
} else if (value == "force_ipv4") {
|
248
|
+
receiver = io::ip_protocol::force_ipv4;
|
249
|
+
} else if (value == "force_ipv6") {
|
250
|
+
receiver = io::ip_protocol::force_ipv6;
|
249
251
|
} else {
|
250
252
|
warnings.push_back(fmt::format(
|
251
|
-
R"(unable to parse "{}" parameter in connection string (value "{}" is not a valid
|
253
|
+
R"(unable to parse "{}" parameter in connection string (value "{}" is not a valid IP protocol preference))",
|
252
254
|
name,
|
253
255
|
value));
|
254
256
|
}
|
255
257
|
}
|
256
258
|
|
259
|
+
#ifdef COUCHBASE_CXX_CLIENT_COLUMNAR
|
257
260
|
void
|
258
|
-
parse_option(
|
261
|
+
parse_option(std::chrono::milliseconds& receiver,
|
259
262
|
const std::string& name,
|
260
263
|
const std::string& value,
|
261
264
|
std::vector<std::string>& warnings)
|
262
265
|
{
|
263
|
-
|
264
|
-
receiver =
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
266
|
+
try {
|
267
|
+
receiver = std::chrono::duration_cast<std::chrono::milliseconds>(
|
268
|
+
parse_duration(string_codec::url_decode(value)));
|
269
|
+
} catch (const duration_parse_error& dpe) {
|
270
|
+
warnings.push_back(
|
271
|
+
fmt::format(R"(unable to parse "{}" parameter in connection string (value: "{}"): {})",
|
272
|
+
name,
|
273
|
+
value,
|
274
|
+
dpe.what()));
|
275
|
+
} catch (const std::invalid_argument& ex1) {
|
276
|
+
warnings.push_back(fmt::format(
|
277
|
+
R"(unable to parse "{}" parameter in connection string (value "{}" is not a number): {})",
|
278
|
+
name,
|
279
|
+
value,
|
280
|
+
ex1.what()));
|
281
|
+
} catch (const std::out_of_range& ex2) {
|
282
|
+
warnings.push_back(fmt::format(
|
283
|
+
R"(unable to parse "{}" parameter in connection string (value "{}" is out of range): {})",
|
284
|
+
name,
|
285
|
+
value,
|
286
|
+
ex2.what()));
|
287
|
+
}
|
288
|
+
}
|
289
|
+
#else
|
290
|
+
void
|
291
|
+
parse_option(tls_verify_mode& receiver,
|
292
|
+
const std::string& name,
|
293
|
+
const std::string& value,
|
294
|
+
std::vector<std::string>& warnings)
|
295
|
+
{
|
296
|
+
if (value == "none") {
|
297
|
+
receiver = tls_verify_mode::none;
|
298
|
+
} else if (value == "peer") {
|
299
|
+
receiver = tls_verify_mode::peer;
|
269
300
|
} else {
|
270
301
|
warnings.push_back(fmt::format(
|
271
|
-
R"(unable to parse "{}" parameter in connection string (value "{}" is not a valid
|
302
|
+
R"(unable to parse "{}" parameter in connection string (value "{}" is not a valid TLS verification mode))",
|
272
303
|
name,
|
273
304
|
value));
|
274
305
|
}
|
@@ -323,6 +354,7 @@ parse_option(std::chrono::milliseconds& receiver,
|
|
323
354
|
}
|
324
355
|
}
|
325
356
|
}
|
357
|
+
#endif
|
326
358
|
|
327
359
|
void
|
328
360
|
extract_options(connection_string& connstr)
|
@@ -333,6 +365,54 @@ extract_options(connection_string& connstr)
|
|
333
365
|
connstr.options.enable_dns_srv = false;
|
334
366
|
}
|
335
367
|
for (const auto& [name, value] : connstr.params) {
|
368
|
+
#ifdef COUCHBASE_CXX_CLIENT_COLUMNAR
|
369
|
+
if (name == "security.trust_only_pem_file") {
|
370
|
+
/**
|
371
|
+
* Set the trust cert path
|
372
|
+
*/
|
373
|
+
parse_option(connstr.options.trust_certificate, name, value, connstr.warnings);
|
374
|
+
} else if (name == "security.disable_server_certificate_verification") {
|
375
|
+
/**
|
376
|
+
* Disable TLS server cert verification if set to true.
|
377
|
+
*/
|
378
|
+
if (value == "true" || value == "yes" || value == "on" || value == "1") {
|
379
|
+
connstr.options.tls_verify = tls_verify_mode::none;
|
380
|
+
} else if (value == "false" || value == "no" || value == "off" || value == "0") {
|
381
|
+
connstr.options.tls_verify = tls_verify_mode::peer;
|
382
|
+
} else {
|
383
|
+
connstr.warnings.push_back(fmt::format(
|
384
|
+
R"(unable to parse "{}" parameter in connection string (value "{}" cannot be interpreted as a boolean))",
|
385
|
+
name,
|
386
|
+
value));
|
387
|
+
}
|
388
|
+
|
389
|
+
} else if (name == "timeout.connect_timeout") {
|
390
|
+
/**
|
391
|
+
* The period of time allocated to complete bootstrap
|
392
|
+
*/
|
393
|
+
parse_option(connstr.options.bootstrap_timeout, name, value, connstr.warnings);
|
394
|
+
} else if (name == "timeout.dispatch_timeout") {
|
395
|
+
/**
|
396
|
+
* Number of seconds to wait before timing out a Query or N1QL request by the client.
|
397
|
+
*/
|
398
|
+
parse_option(connstr.options.dispatch_timeout, name, value, connstr.warnings);
|
399
|
+
} else if (name == "timeout.query_timeout") {
|
400
|
+
/**
|
401
|
+
* Number of seconds to wait before timing out a Query or N1QL request by the client.
|
402
|
+
*/
|
403
|
+
parse_option(connstr.options.query_timeout, name, value, connstr.warnings);
|
404
|
+
} else if (name == "timeout.resolve_timeout") {
|
405
|
+
/**
|
406
|
+
* The period of time to resolve DNS name of the node to IP address
|
407
|
+
*/
|
408
|
+
parse_option(connstr.options.resolve_timeout, name, value, connstr.warnings);
|
409
|
+
} else if (name == "timeout.socket_connect_timeout") {
|
410
|
+
/**
|
411
|
+
* Number of seconds the client should wait while attempting to connect to a node’s KV service
|
412
|
+
* via a socket. Initial connection, reconnecting, node added, etc.
|
413
|
+
*/
|
414
|
+
parse_option(connstr.options.connect_timeout, name, value, connstr.warnings);
|
415
|
+
#else
|
336
416
|
if (name == "kv_connect_timeout") {
|
337
417
|
/**
|
338
418
|
* Number of seconds the client should wait while attempting to connect to a node’s KV service
|
@@ -404,6 +484,7 @@ extract_options(connection_string& connstr)
|
|
404
484
|
if (force_ipv4) {
|
405
485
|
connstr.options.use_ip_protocol = io::ip_protocol::force_ipv4;
|
406
486
|
}
|
487
|
+
#endif
|
407
488
|
} else if (name == "ip_protocol") {
|
408
489
|
/**
|
409
490
|
* Controls preference of IP protocol for name resolution
|
@@ -413,6 +494,37 @@ extract_options(connection_string& connstr)
|
|
413
494
|
parse_option(connstr.options.config_poll_interval, name, value, connstr.warnings);
|
414
495
|
} else if (name == "config_poll_floor") {
|
415
496
|
parse_option(connstr.options.config_poll_floor, name, value, connstr.warnings);
|
497
|
+
} else if (name == "enable_dns_srv") {
|
498
|
+
if (connstr.bootstrap_nodes.size() == 1) {
|
499
|
+
parse_option(connstr.options.enable_dns_srv, name, value, connstr.warnings);
|
500
|
+
} else {
|
501
|
+
connstr.warnings.push_back(fmt::format(
|
502
|
+
R"(parameter "{}" requires single entry in bootstrap nodes list of the connection string, ignoring (value "{}"))",
|
503
|
+
name,
|
504
|
+
value));
|
505
|
+
}
|
506
|
+
} else if (name == "network") {
|
507
|
+
connstr.options.network =
|
508
|
+
value; /* current known values are "auto", "default" and "external" */
|
509
|
+
} else if (name == "user_agent_extra") {
|
510
|
+
/**
|
511
|
+
* string, that will be appended to identification fields of the server protocols (key in HELO
|
512
|
+
* packet for MCBP, "user-agent" header for HTTP)
|
513
|
+
*/
|
514
|
+
parse_option(connstr.options.user_agent_extra, name, value, connstr.warnings);
|
515
|
+
} else if (name == "dump_configuration") {
|
516
|
+
/**
|
517
|
+
* Whether to dump every new configuration on TRACE level
|
518
|
+
*/
|
519
|
+
parse_option(connstr.options.dump_configuration, name, value, connstr.warnings);
|
520
|
+
} else if (name == "enable_clustermap_notification") {
|
521
|
+
/**
|
522
|
+
* Allow the server to push configuration updates asynchronously.
|
523
|
+
*/
|
524
|
+
parse_option(connstr.options.enable_clustermap_notification, name, value, connstr.warnings);
|
525
|
+
} else if (name == "disable_mozilla_ca_certificates") {
|
526
|
+
parse_option(connstr.options.disable_mozilla_ca_certificates, name, value, connstr.warnings);
|
527
|
+
#ifndef COUCHBASE_CXX_CLIENT_COLUMNAR
|
416
528
|
} else if (name == "max_http_connections") {
|
417
529
|
/**
|
418
530
|
* The maximum number of HTTP connections allowed on a per-host and per-port basis. 0
|
@@ -429,40 +541,16 @@ extract_options(connection_string& connstr)
|
|
429
541
|
* The period of time allocated to complete bootstrap
|
430
542
|
*/
|
431
543
|
parse_option(connstr.options.bootstrap_timeout, name, value, connstr.warnings);
|
432
|
-
#ifdef COUCHBASE_CXX_CLIENT_COLUMNAR
|
433
|
-
} else if (name == "dispatch_timeout") {
|
434
|
-
/**
|
435
|
-
* The period of time allocated to complete HTTP session bootstrap
|
436
|
-
*/
|
437
|
-
parse_option(connstr.options.dispatch_timeout, name, value, connstr.warnings);
|
438
|
-
#endif
|
439
544
|
} else if (name == "resolve_timeout") {
|
440
545
|
/**
|
441
546
|
* The period of time to resolve DNS name of the node to IP address
|
442
547
|
*/
|
443
548
|
parse_option(connstr.options.resolve_timeout, name, value, connstr.warnings);
|
444
|
-
} else if (name == "enable_dns_srv") {
|
445
|
-
if (connstr.bootstrap_nodes.size() == 1) {
|
446
|
-
parse_option(connstr.options.enable_dns_srv, name, value, connstr.warnings);
|
447
|
-
} else {
|
448
|
-
connstr.warnings.push_back(fmt::format(
|
449
|
-
R"(parameter "{}" requires single entry in bootstrap nodes list of the connection string, ignoring (value "{}"))",
|
450
|
-
name,
|
451
|
-
value));
|
452
|
-
}
|
453
|
-
} else if (name == "network") {
|
454
|
-
connstr.options.network =
|
455
|
-
value; /* current known values are "auto", "default" and "external" */
|
456
549
|
} else if (name == "show_queries") {
|
457
550
|
/**
|
458
551
|
* Whether to display N1QL, Analytics, Search queries on info level (default false)
|
459
552
|
*/
|
460
553
|
parse_option(connstr.options.show_queries, name, value, connstr.warnings);
|
461
|
-
} else if (name == "enable_clustermap_notification") {
|
462
|
-
/**
|
463
|
-
* Allow the server to push configuration updates asynchronously.
|
464
|
-
*/
|
465
|
-
parse_option(connstr.options.enable_clustermap_notification, name, value, connstr.warnings);
|
466
554
|
} else if (name == "enable_unordered_execution") {
|
467
555
|
/**
|
468
556
|
* Allow the server to reorder commands
|
@@ -487,25 +575,13 @@ extract_options(connection_string& connstr)
|
|
487
575
|
parse_option(connstr.options.enable_metrics, name, value, connstr.warnings);
|
488
576
|
} else if (name == "tls_verify") {
|
489
577
|
parse_option(connstr.options.tls_verify, name, value, connstr.warnings);
|
490
|
-
} else if (name == "disable_mozilla_ca_certificates") {
|
491
|
-
parse_option(connstr.options.disable_mozilla_ca_certificates, name, value, connstr.warnings);
|
492
578
|
} else if (name == "tls_disable_deprecated_protocols") {
|
493
579
|
parse_option(connstr.options.tls_disable_deprecated_protocols, name, value, connstr.warnings);
|
494
580
|
} else if (name == "tls_disable_v1_2") {
|
495
581
|
parse_option(connstr.options.tls_disable_v1_2, name, value, connstr.warnings);
|
496
|
-
} else if (name == "user_agent_extra") {
|
497
|
-
/**
|
498
|
-
* string, that will be appended to identification fields of the server protocols (key in HELO
|
499
|
-
* packet for MCBP, "user-agent" header for HTTP)
|
500
|
-
*/
|
501
|
-
parse_option(connstr.options.user_agent_extra, name, value, connstr.warnings);
|
502
|
-
} else if (name == "dump_configuration") {
|
503
|
-
/**
|
504
|
-
* Whether to dump every new configuration on TRACE level
|
505
|
-
*/
|
506
|
-
parse_option(connstr.options.dump_configuration, name, value, connstr.warnings);
|
507
582
|
} else if (name == "server_group") {
|
508
583
|
parse_option(connstr.options.server_group, name, value, connstr.warnings);
|
584
|
+
#endif
|
509
585
|
} else {
|
510
586
|
connstr.warnings.push_back(
|
511
587
|
fmt::format(R"(unknown parameter "{}" in connection string (value "{}"))", name, value));
|
@@ -241,7 +241,7 @@ struct analytics_options : public common_options<analytics_options> {
|
|
241
241
|
std::enable_if_t<codec::is_serializer_v<Serializer>, bool> = true>
|
242
242
|
auto raw(std::string name, const Value& value) -> analytics_options&
|
243
243
|
{
|
244
|
-
raw_[std::move(name)] = std::move(Serializer::template serialize(value));
|
244
|
+
raw_[std::move(name)] = std::move(Serializer::template serialize<const Value&>(value));
|
245
245
|
return self();
|
246
246
|
}
|
247
247
|
|
@@ -359,7 +359,8 @@ private:
|
|
359
359
|
std::enable_if_t<codec::is_serializer_v<Serializer>, bool> = true>
|
360
360
|
void encode_positional_parameters(const Parameter& parameter, Rest... args)
|
361
361
|
{
|
362
|
-
positional_parameters_.emplace_back(
|
362
|
+
positional_parameters_.emplace_back(
|
363
|
+
std::move(Serializer::template serialize<Parameter>(parameter)));
|
363
364
|
if constexpr (sizeof...(args) > 0) {
|
364
365
|
encode_positional_parameters<Serializer>(args...);
|
365
366
|
}
|
@@ -373,7 +374,7 @@ private:
|
|
373
374
|
void encode_named_parameters(const std::pair<Name, Parameter>& parameter, Rest... args)
|
374
375
|
{
|
375
376
|
named_parameters_[parameter.first] =
|
376
|
-
std::move(Serializer::template serialize(parameter.second));
|
377
|
+
std::move(Serializer::template serialize<Parameter>(parameter.second));
|
377
378
|
if constexpr (sizeof...(args) > 0) {
|
378
379
|
encode_named_parameters<Serializer>(args...);
|
379
380
|
}
|
@@ -47,7 +47,7 @@ public:
|
|
47
47
|
static auto serialize([[maybe_unused]] Document document) -> binary
|
48
48
|
{
|
49
49
|
try {
|
50
|
-
if constexpr (std::is_null_pointer_v<Document
|
50
|
+
if constexpr (std::is_null_pointer_v<std::remove_reference_t<Document>>) {
|
51
51
|
return core::utils::json::generate_binary(tao::json::null);
|
52
52
|
} else {
|
53
53
|
return core::utils::json::generate_binary(tao::json::value(document));
|